2 Created on Jul 13, 2016 20 logger = logging.getLogger(name)
21 logger.setLevel(logging.DEBUG)
24 ch = logging.StreamHandler()
25 ch.setLevel(logging.DEBUG)
28 formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s')
31 ch.setFormatter(formatter)
38 class Test(unittest.TestCase):
39 CONFIG_NAME =
"../../ini/db-task.ini" 41 SITE_ID =
'1234567890' 42 URL =
'http://127.0.0.1' 44 TEST_URL_PROPERTY_CAST_TO_INTEGER =
"[{\"URL\":{\"Status\":{\"IF(%ERRORMASK% & 128 > 0, 1, %STATUS%)\":0}}}]" 45 TEST_URL_PROPERTY_CAST_TO_STRING = \
46 "[{\"URL\":{\"HTTPMethod\":{\"IF(%ERRORMASK% & 128 > 0, 'post', %HTTPMETHOD%)\":1}}}]" 47 TEST_URL_PROPERTY_CAST_TO_DATETIME = \
48 "[{\"URL\":{\"PDate\":{\"IF(%ERRORMASK% & 128 > 0, '2016-07-01 00:00:00', %PDATE%)\":2}}}]" 49 TEST_URL_PROPERTY_CAST_TO_UNSUPPORT =
"[{\"URL\":{\"Status\":{\"IF(%ERRORMASK% & 128 > 0, 1, %STATUS%)\":3}}}]" 51 TEST_SITE_PROPERTY_CAST_TO_INTEGER =
"[{\"Site\":{\"Errors\":{\"IF(%ERRORMASK% & 128 > 0, 1, %ERRORS%)\":0}}}]" 53 TEST_PDATE_TIME =
"[{\"pattern\": \".*bbc.com\/dir1\/.*\", \"value\":\"IF(TIME(%PDATE%)='00:00:01', TIME(NOW()), TIME(%PDATE%))\"}]" 56 cfgParser = ConfigParser.ConfigParser()
58 self.
wrapper = DBTasksWrapper.DBTasksWrapper(cfgParser)
75 if objectName == FieldsSQLExpressionEvaluator.OBJECT_NAME_SITE:
78 elif objectName == FieldsSQLExpressionEvaluator.OBJECT_NAME_URL:
82 for fieldName, fieldValue
in fields.items():
83 if hasattr(obj, fieldName):
84 setattr(obj, fieldName, fieldValue)
97 if isinstance(propertyName, basestring)
and propertyValue
is not None:
98 ret[propertyName] = propertyValue
105 errorMessage =
"Return wrong 'status' value" 106 siteProperties = self.
getSiteProperties(APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER, \
109 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL, {
'status':7,
'errorMask':128})
110 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
111 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
112 self.assertTrue(changedFieldsDict[
"status"] == 1, errorMessage)
115 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL, {
'status':7,
'errorMask':127})
116 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
117 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
118 self.assertTrue(changedFieldsDict[
"status"] == 7, errorMessage)
123 errorMessage =
"Return wrong 'httpMethod' value" 124 siteProperties = self.
getSiteProperties(APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER, \
127 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL, {
'httpMethod':
'post',
'errorMask':128})
128 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
129 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
130 self.assertTrue(changedFieldsDict[
"httpMethod"] ==
'post', errorMessage)
133 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL, {
'httpMethod':
'get',
'errorMask':127})
134 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
135 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
136 self.assertTrue(changedFieldsDict[
"httpMethod"] ==
'get', errorMessage)
141 errorMessage =
"Return wrong 'pDate' value" 142 siteProperties = self.
getSiteProperties(APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER, \
145 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL,
146 {
'pDate':
'2016-01-01 00:00:00',
'errorMask':128})
147 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
148 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
149 self.assertTrue(changedFieldsDict[
"pDate"] ==
'2016-07-01 00:00:00', errorMessage + \
150 ' pDate: ' + str(urlObj.pDate))
153 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL,
154 {
'pDate':
'2016-01-01 00:00:00',
'errorMask':127})
155 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
156 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
157 self.assertTrue(changedFieldsDict[
"pDate"] ==
'2016-01-01 00:00:00', errorMessage + \
158 ' pDate: ' + str(urlObj.pDate))
163 errorMessage =
"Return wrong 'status' value" 164 siteProperties = self.
getSiteProperties(APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER, \
167 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL, {
'status':4,
'errorMask':128})
168 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
169 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
170 self.assertTrue(changedFieldsDict[
"status"] == 4, errorMessage)
173 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL, {
'status':4,
'errorMask':127})
174 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
175 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
176 self.assertTrue(changedFieldsDict[
"status"] == 4, errorMessage)
181 errorMessage =
"Return wrong 'status' value" 182 siteProperties = self.
getSiteProperties(APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_PROCESSOR, \
185 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL, {
'status':4,
'errorMask':128})
186 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
187 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
188 self.assertTrue(changedFieldsDict[
"status"] == 4, errorMessage)
191 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL, {
'status':4,
'errorMask':127})
192 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper,
None, urlObj, self.
logger, \
193 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
194 self.assertTrue(changedFieldsDict[
"status"] == 4, errorMessage)
199 errorMessage =
"Return wrong 'errors' value" 200 siteProperties = self.
getSiteProperties(APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER, \
203 siteObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_SITE, {
'errors':2,
'errorMask':128})
205 self.
logger.debug(
'siteObj.errors = ' + str(siteObj.errors))
206 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper, siteObj,
None, self.
logger, \
207 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
208 self.assertTrue(changedFieldsDict[
"errors"] == 1, errorMessage)
210 siteObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_SITE, {
'errors':2,
'errorMask':127})
211 changedFieldsDict = FieldsSQLExpressionEvaluator.execute(siteProperties, self.
wrapper, siteObj,
None, self.
logger, \
212 APP_CONSTS.SQL_EXPRESSION_FIELDS_UPDATE_CRAWLER)
213 self.assertTrue(changedFieldsDict[
"errors"] == 2, errorMessage)
217 errorMessage =
"Return wrong 'pDate' value" 218 siteProperties = self.
getSiteProperties(APP_CONSTS.SQL_EXPRESSION_FIELDS_PDATE_TIME, \
220 urlObj = self.
getObject(FieldsSQLExpressionEvaluator.OBJECT_NAME_URL,
221 {
'status':4,
'errorMask':0, \
222 'pDate':datetime.datetime.now().strftime(
"%Y-%m-%d %H:%M:%S"), \
223 'url':
'http://bbc.com/dir1/index.html'})
224 pubdate = FieldsSQLExpressionEvaluator.evaluatePDateTime(siteProperties, self.
wrapper, urlObj, self.
logger,
None)
226 self.
logger.debug(
"pubdate = " + str(pubdate))
227 self.assertTrue(pubdate == str(datetime.datetime.now().strftime(
"%Y-%m-%d %H:%M:%S")), errorMessage)
229 if __name__ ==
"__main__":
string TEST_SITE_PROPERTY_CAST_TO_INTEGER
def getSiteProperties(self, propertyName, propertyValue)
def testURLWrongStageForUpdate(self)
def testURLCastToDatetime(self)
string TEST_URL_PROPERTY_CAST_TO_INTEGER
def testSiteCastToInteger(self)
TEST_URL_PROPERTY_CAST_TO_STRING
def getLogger(name='test')
TEST_URL_PROPERTY_CAST_TO_DATETIME
def testURLCastToInteger(self)
def getObject(self, objectName, fields)
string TEST_URL_PROPERTY_CAST_TO_UNSUPPORT
def testURLCastToString(self)
def testURLCastToUnsupportType(self)