HCE Project Python language Distributed Tasks Manager Application, Distributed Crawler Application and client API bindings.  2.0.0-chaika
Hierarchical Cluster Engine Python language binding
ftest_SiteProxy.py
Go to the documentation of this file.
1 '''
2 Created on Dec 1, 2015
3 
4 @author: scorp
5 '''
6 import unittest
7 import copy
8 import ppath
9 from dc_crawler.ProxyResolver import ProxyResolver
10 
11 class FakeDBWrapper(object):
12 
13  TEMPL_ELEMENT = {"Site_Id": None, "Host": None, "Domains": None, "Priority": None, "State": None, "Limits": None}
14  TYPE = 0
15 
16 
17  def customRequest(self, query, dbName):
18  ret = []
19  if self.TYPE == 0:
20  elem = self.TEMPL_ELEMENT
21  elem["Site_Id"] = "1"
22  elem["Host"] = "ibm.com:9090"
23  elem["Domains"] = None
24  elem["Priority"] = 1
25  elem["State"] = 1
26  elem["Limits"] = None
27  ret.append(copy.deepcopy(elem))
28  elem["Site_Id"] = "1"
29  elem["Host"] = "intel.com:11"
30  elem["Domains"] = ["*"]
31  elem["Priority"] = 2
32  elem["State"] = 1
33  elem["Limits"] = [10, 10]
34  ret.append(copy.deepcopy(elem))
35  elem["Site_Id"] = "1"
36  elem["Host"] = "intel.com:22"
37  elem["Domains"] = ["mazda.com"]
38  elem["Priority"] = 1
39  elem["State"] = 1
40  elem["Limits"] = [10, 10]
41  ret.append(copy.deepcopy(elem))
42  elem["Site_Id"] = "1"
43  elem["Host"] = "intel.com:44"
44  elem["Domains"] = ["mazda.com"]
45  elem["Priority"] = 0
46  elem["State"] = 1
47  elem["Limits"] = [1, 2, 3]
48  ret.append(copy.deepcopy(elem))
49  elif self.TYPE == 1:
50  elem = self.TEMPL_ELEMENT
51  elem["Site_Id"] = "1"
52  elem["Host"] = "ibm.com:9090"
53  elem["Domains"] = None
54  elem["Priority"] = 1
55  elem["State"] = 1
56  elem["Limits"] = None
57  ret.append(copy.deepcopy(elem))
58  elem["Site_Id"] = "1"
59  elem["Host"] = "intel.com:11"
60  elem["Domains"] = ["*"]
61  elem["Priority"] = 1
62  elem["State"] = 1
63  elem["Limits"] = [10, 10, 2]
64  ret.append(copy.deepcopy(elem))
65  elem["Site_Id"] = "1"
66  elem["Host"] = "intel.com:22"
67  elem["Domains"] = ["mazda.com"]
68  elem["Priority"] = 1
69  elem["State"] = 1
70  elem["Limits"] = [10, 10, 2]
71  ret.append(copy.deepcopy(elem))
72  elem["Site_Id"] = "1"
73  elem["Host"] = "intel.com:44"
74  elem["Domains"] = ["www.latimes.com"]
75  elem["Priority"] = 1
76  elem["State"] = 1
77  elem["Limits"] = [11, 12, 13]
78  ret.append(copy.deepcopy(elem))
79  return ret
80 
81 
82 class Test(unittest.TestCase):
83 
84 
86  dbWrapper = FakeDBWrapper()
87  siteId = "1"
88  url = "http://www.latimes.com/local/lanow/la-me-ln-kamala-harris-lawsuit-car-donation-charities-20151201-story.html"
89  siteProperties = {"HTTP_PROXY_HOST": "host.com", "HTTP_PROXY_PORT": "8989", "USER_PROXY": "{}"}
90  proxyResolver = ProxyResolver(siteProperties, dbWrapper, siteId, url)
91  result = proxyResolver.getProxy()
92  self.assertTrue(result == ("host.com", "8989"))
93 
94 
96  dbWrapper = FakeDBWrapper()
97  siteId = "1"
98  url = "http://www.latimes.com/local/lanow/la-me-ln-kamala-harris-lawsuit-car-donation-charities-20151201-story.html"
99  siteProperties = {"USER_PROXY": "{\"source\": 0, \"file_path\": \"file11.json\", \"proxies\": " +
100  "{\"toxic.com:9000\" : {\"host\": \"toxic.com:9000\", \"domains\":[\"www.latimes.com\"]," +
101  "\"priority\": 44, \"limits\": null}, " +
102  "\"proxic.com:9000\" : {\"host\": \"proxic.com:9000\", \"domains\":[\"*\"]," +
103  "\"priority\": 11, \"limits\": null}, " +
104  "\"nosic.com:9000\" : {\"host\": \"nosic.com:9000\", \"domains\":[\"www.latimes.com\"]," +
105  "\"priority\": 1, \"limits\": null}}}"
106  }
107  proxyResolver = ProxyResolver(siteProperties, dbWrapper, siteId, url)
108  result = proxyResolver.getProxy()
109  self.assertTrue(result == ("nosic.com", "9000"))
110 
111 
113  dbWrapper = FakeDBWrapper()
114  siteId = "1"
115  url = "http://www.latimes.com/local/lanow/la-me-ln-kamala-harris-lawsuit-car-donation-charities-20151201-story.html"
116  siteProperties = {"USER_PROXY": "{\"source\": 1, \"file_path\": \"file11.json\", \"proxies\": {}}"}
117  proxyResolver = ProxyResolver(siteProperties, dbWrapper, siteId, url)
118  result = proxyResolver.getProxy()
119  self.assertTrue(result == ("ibm.com", "9090"))
120 
121 
123  dbWrapper = FakeDBWrapper()
124  dbWrapper.TYPE = 1
125  siteId = "1"
126  url = "http://www.latimes.com/local/lanow/la-me-ln-kamala-harris-lawsuit-car-donation-charities-20151201-story.html"
127  siteProperties = {"USER_PROXY": "{\"source\": 1, \"file_path\": \"file22.json\", \"proxies\": {}}"}
128  proxyResolver = ProxyResolver(siteProperties, dbWrapper, siteId, url)
129  result = proxyResolver.getProxy()
130  self.assertTrue(result == ("intel.com", "11"))
131 
132 
134  dbWrapper = FakeDBWrapper()
135  dbWrapper.TYPE = 1
136  siteId = "1"
137  url = "http://www.latimes.com/local/lanow/la-me-ln-kamala-harris-lawsuit-car-donation-charities-20151201-story.html"
138  siteProperties = {"USER_PROXY": "{\"source\": 1, \"file_path\": \"file33.json\", \"proxies\": {}}"}
139  proxyResolver = ProxyResolver(siteProperties, dbWrapper, siteId, url)
140  result = proxyResolver.getProxy()
141  self.assertTrue(result == ("intel.com", "44"))
142 
143 
144 if __name__ == "__main__":
145  #import sys;sys.argv = ['', 'Test.testName']
146  unittest.main()
def customRequest(self, query, dbName)