import unittest #from patterns.Pattern1 import Pattern1, Pattern2, Pattern3 #from createKeyRequestReport import applyPatterns from key_request_parser import krparser class PatternTestCases(unittest.TestCase): def setUp(self): self.krparser=krp = krparser.KRParser(None, "", "") def test_pattern1(self): # p=Pattern1() # for p in patterns: # groups=p.parseServicesAndMethods('100-(builtin:service.keyRequest.errors.server.rate:filter(and(or(in(dt.entity.service_method,entitySelector(type(service_method),fromRelationship.isServiceMethodOfService(type(SERVICE),entityName(api.bmwgroup.com - PROD)),entityName(remoteservices)))))):splitBy():sum:auto:sort(value(sum,descending)))') result=self.krparser.applyPatterns('(100)*((builtin:service.keyRequest.errors.server.successCount:filter(and(or(in(dt.entity.service_method,entitySelector(type(service_method),fromRelationship.isServiceMethodOfService(type(~SERVICE~),entityName.in(~RemoteSoftwareUpgrade.WebApp - PROD~)),entityName.in(~POST /v2/vehicle/rsustatus/finishInstallation~,~POST /v2/vehicle/rsustatus/preparationCompleted~,~POST /v2/vehicle/rsustatus/updateAvailable~)))))):splitBy())/(builtin:service.keyRequest.count.server:filter(and(or(in(dt.entity.service_method,entitySelector(type(service_method),fromRelationship.isServiceMethodOfService(type(~SERVICE~),entityName.in(~RemoteSoftwareUpgrade.WebApp - PROD~)),entityName.in(~POST /v2/vehicle/rsustatus/finishInstallation~,~POST /v2/vehicle/rsustatus/preparationCompleted~,~POST /v2/vehicle/rsustatus/updateAvailable~)))))):splitBy()))') expected=[{'services': ['RemoteSoftwareUpgrade.WebApp - PROD'], 'methods': ['POST /v2/vehicle/rsustatus/finishInstallation', 'POST /v2/vehicle/rsustatus/preparationCompleted', 'POST /v2/vehicle/rsustatus/updateAvailable']}, {'services': ['RemoteSoftwareUpgrade.WebApp - PROD'], 'methods': ['POST /v2/vehicle/rsustatus/finishInstallation', 'POST /v2/vehicle/rsustatus/preparationCompleted', 'POST /v2/vehicle/rsustatus/updateAvailable']}] self.assertEqual(result.__str__(), expected.__str__()) def test_pattern2(self): result=self.krparser.applyPatterns('(100)*((builtin:service.keyRequest.errors.server.successCount:filter(and(or(in(dt.entity.service_method,entitySelector(type(service_method),fromRelationship.isServiceMethodOfService(type(~SERVICE~),entityName.in(~Perseus (/service)- cub-personalization - prod~)),entityName.in(~GET /service/api/vehicle/v1/gcid/[UUID]/vin//pds~,~PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds~,~createAssociationForGcidAndVin~)))))):splitBy())/(builtin:service.keyRequest.count.server:filter(and(or(in(dt.entity.service_method,entitySelector(type(service_method),fromRelationship.isServiceMethodOfService(type(~SERVICE~),entityName.in(~Perseus (/service)- cub-personalization - prod~)),entityName.in(~GET /service/api/vehicle/v1/gcid/[UUID]/vin//pds~,~PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds~,~createAssociationForGcidAndVin~)))))):splitBy()))') expected=[{'services': ['Perseus (/service)- cub-personalization - prod'], 'methods': ['GET /service/api/vehicle/v1/gcid/[UUID]/vin//pds', 'PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds', 'createAssociationForGcidAndVin']}, {'services': ['Perseus (/service)- cub-personalization - prod'], 'methods': ['GET /service/api/vehicle/v1/gcid/[UUID]/vin//pds', 'PUT /service/api/vehicle/v1/gcid/[UUID]/vin//pds', 'createAssociationForGcidAndVin']}] self.assertEqual(result.__str__(), expected.__str__()) def test_pattern3(self): result=self.krparser.applyPatterns('(100)* ((1)-(builtin:service.keyRequest.errors.fivexx.count:filter(and(or(in(dt.entity.service_method,entitySelector(type(service_method),fromRelationship.isServiceMethodOfService(type(~SERVICE~),entityName.in(~DownloadApi - ccis - prod~),tag(~Environment:PROD~)),entityName.in(~download~)))))):splitBy())/(builtin:service.keyRequest.count.server:filter(and(or(in(dt.entity.service_method,entitySelector(type(service_method),fromRelationship.isServiceMethodOfService(type(~SERVICE~),entityName.in(~DownloadApi - ccis - prod~),tag(~Environment:PROD~)),entityName.in(~download~)))))):splitBy()))') expected=[{'services': ['DownloadApi - ccis - prod'], 'methods': ['download']}, {'services': ['DownloadApi - ccis - prod'], 'methods': ['download']}] self.assertEqual(result.__str__(), expected.__str__()) def test_pattern4(self): result=self.krparser.applyPatterns('((builtin:service.keyRequest.errors.server.successCount)/(builtin:service.keyRequest.count.server)*(100)):filter(or(eq(dt.entity.service_method,SERVICE_METHOD-02E88144CFC57AEA),eq(dt.entity.service_method,SERVICE_METHOD-2C51346F87339CE8),eq(dt.entity.service_method,SERVICE_METHOD-FE4E553F84167C2E),eq(dt.entity.service_method,SERVICE_METHOD-8A384C81D9AF38CA),eq(dt.entity.service_method,SERVICE_METHOD-3FAF84E444877083),eq(dt.entity.service_method,SERVICE_METHOD-220B20CF01912501),eq(dt.entity.service_method,SERVICE_METHOD-76B0223CDED11B41),eq(dt.entity.service_method,SERVICE_METHOD-ED80E83F71F9E8B7),eq(dt.entity.service_method,SERVICE_METHOD-C03CAD42FED5019E),eq(dt.entity.service_method,SERVICE_METHOD-82354FEF673A217F))):splitBy():avg') expected=[{'services': [], 'methods': ['SERVICE_METHOD-02E88144CFC57AEA', 'SERVICE_METHOD-2C51346F87339CE8', 'SERVICE_METHOD-FE4E553F84167C2E', 'SERVICE_METHOD-8A384C81D9AF38CA', 'SERVICE_METHOD-3FAF84E444877083', 'SERVICE_METHOD-220B20CF01912501', 'SERVICE_METHOD-76B0223CDED11B41', 'SERVICE_METHOD-ED80E83F71F9E8B7', 'SERVICE_METHOD-C03CAD42FED5019E', 'SERVICE_METHOD-82354FEF673A217F']}] self.assertEqual(result.__str__(), expected.__str__()) #'(100)*((1)-(builtin:service.keyRequest.errors.fivexx.count:filter(and(or(in(dt.entity.service_method,entitySelector(type(service_method), fromRelationship.isServiceMethodOfService( type(SERVICE),entityName.in( server (/cdp/release/vehicle/appstore) - vcis-information - prod ), tag(Environment:PROD) ) ,entityName.in(cdp/release/vehicle/appstore/servlet/manage, cdp/release/vehicle/appstore/servlet/start, cdp/release/vehicle/appstore/servlet/linkstoreimage, cdp/release/vehicle/appstore/servlet/ajaxReload )))))):splitBy())/(builtin:service.keyRequest.count.server:filter(and(or(in(dt.entity.service_method,entitySelector(type(service_method), fromRelationship.isServiceMethodOfService( type(SERVICE),entityName.in(server (/cdp/release/vehicle/appstore) - vcis-information - prod ), tag(Environment:PROD) ) ,entityName.in(cdp/release/vehicle/appstore/servlet/manage, cdp/release/vehicle/appstore/servlet/start, cdp/release/vehicle/appstore/servlet/linkstoreimage, cdp/release/vehicle/appstore/servlet/ajaxReload )))))):splitBy()))'