def test_Connection_to_Vehicle_Query_API(self): dataType = 'veh' requestType = 'qry' self.config1['DATA'] = dataType self.config2['DATA'] = dataType self.config1['REQUEST_TYPE'] = requestType self.config2['REQUEST_TYPE'] = requestType self.client1 = self.create_asyncClient_and_request(self.config1) self.client2 = self.create_asyncClient_and_request(self.config2) start_time = datetime.datetime.utcnow() self.client1.start() self.client2.start() time_out = 180 time.sleep(time_out) # TODO Assert Something # Assert Location and Date time is correct # assert msg1 = self.client1.get_all_messages() self.logger.info("Processing Client 1 Messages") for m in msg1: # self.logger.info( m.toJson() ) if m.get_payload_type() in ('veh', ): self.assertTrue( testRunnerHelper.validate_datetime(m.payload, self.config1)) self.assertTrue( testRunnerHelper.validate_location(m.payload, self.config1)) msg2 = self.client2.get_all_messages() self.logger.info("Processing Client 2 Messages") for m in msg2: # self.logger.info( m.toJson()) if m.get_payload_type() in ('veh', ): self.assertTrue( testRunnerHelper.validate_datetime(m.payload, self.config2)) self.assertTrue( testRunnerHelper.validate_location(m.payload, self.config2)) self.logger.info('Records Received: %d', len(msg1)) self.logger.info('Records Received: %d', len(msg2)) self.assertGreaterEqual(len(msg1), 100) self.assertGreaterEqual(len(msg2), 100) self.logger.info( "All Records Validated against spatial and temporal parameters")
def run_subscription_test(self, request, **kwargs): self.client.client.setRequest(request) self.client.start() break_loop = False if kwargs is None: kwargs = {} record_count = 0 time.sleep(5) break_loop = False self.logger.info(request.toJson()) start_time = datetime.datetime.utcnow() while self.client.queue.qsize() <= kwargs.get('min_queue', 10): current_time = datetime.datetime.utcnow() time_delta = current_time - start_time if time_delta.total_seconds() >= kwargs.get('timeOut', 60): break else: time.sleep(2) responses = self.client.get_messages(25) self.logger.info( 'validating all returned records to ensure spatial consistency- outliers will be displayed on the screen ' \ + 'exception processing same thing with expected result') for msg in responses: # Ignore Status and other payload message types if msg.get_payload_type() in ('status', ) and msg.payload.get( 'code', "") in (u"FAILURE", ): raise self.failureException( msg= "ODE Failed to process the request. ODE Status code is FAILURE" ) if msg.get_payload_type() not in ('status', 'other', 'control'): self.assertEquals(msg.get_payload_type(), kwargs.get('dataType', request.dataType)) if msg.get_payload_type() in ('veh', ): self.assertTrue( testRunnerHelper.validate_location(msg.payload, self.config)) self.assertIsNotNone(msg.get_payload_value('latitude', None)) self.assertIsNotNone(msg.get_payload_value('longitude', None)) self.assertIsNotNone(msg.get_payload_value('dateTime', None)) self.assertIsNotNone(msg.get_payload_value('serialId', None)) record_count += 1 self.logger.info("Total Records Received: %d", record_count) self.assertGreaterEqual( record_count, kwargs.get('min_records', 5), "Did Not receive at least {} records from the ODE".format( kwargs.get('min_records', 5))) self.logger.info("Validated all records")
def test_latitude_equals_nwLat_validates_true(self): msg = json.loads(self.veh_json) self.config['SERVICE_REGION'] = self.service_region msg['latitude'] = float(self.service_region['nwLat']) self.assertTrue(testRunnerHelper.validate_location(msg, self.config))
def test_longitude_outside_requested_region(self): msg = json.loads(self.veh_json) msg['longitude'] = 0.00 self.config['SERVICE_REGION'] = self.service_region self.assertFalse(testRunnerHelper.validate_location(msg, self.config))
def test_latitude_and_longitude_within_requested_region(self): msg = json.loads(self.veh_json) msg['longitude'] = 51.5072 msg['latitude'] = 0.1275 self.config['SERVICE_REGION'] = self.service_region self.assertFalse(testRunnerHelper.validate_location(msg, self.config))
def run_query_test(self, request, **kwargs): self.client.client.setRequest(request) self.client.start() if kwargs is None: kwargs = {} record_count = 0 time.sleep(5) self.logger.info(request.toJson()) start_time = datetime.datetime.utcnow() while self.client.queue.qsize() <= kwargs.get('min_queue', 10): current_time = datetime.datetime.utcnow() time_delta = current_time - start_time if time_delta.total_seconds() >= kwargs.get('timeOut', 60): self.logger.info("TImeout reached") break else: time.sleep(3) self.logger.info('validating all returned records to ensure spatial and/or temporal consistency - outliers will be displayed on the screen' \ + 'exception processing same thing with expected result') exception_list = [] while not (self.client.is_buffer_empty() and record_count != 0): responses = self.client.get_messages(25) for msg in responses: self.logger.info(msg) if msg.get_payload_type() in kwargs.get( 'dataType', request.dataType): self.assertEquals(msg.get_payload_type(), kwargs.get('dataType', request.dataType)) record_count += 1 # TODO Change assertion as more data types support Lat / Long Keys # TODO Change assertion as more data types have their created date elif msg.get_payload_type() in ('veh', ): self.assertEqual(msg.get_payload_value('dataType', None), 'veh') record_count += 1 try: self.assertIsNotNone( msg.get_payload_value('serialId', None)) self.assertTrue( testRunnerHelper.validate_datetime( msg.payload, self.config), msg= "Error Date Time of SerialID: {1} Lat: {0} Long: {1}" .format(msg.get_payload_value("dateTime"), msg.get_payload_value("serialId"))) self.assertTrue( testRunnerHelper.validate_location( msg.payload, self.config), msg= "Error Validating Spatial Region Record SerialID: {2} Lat: {0} Long: {1}" .format(msg.get_payload_value("latitude"), msg.get_payload_value("longitude"), msg.get_payload_value("serialId"))) self.assertIsNotNone( msg.get_payload_value('serialId', None), msg="Vehicle Record Serial ID is Missing") except AssertionError as e: self.logger.warn(e.message) exception_list.append(e) # self.assertTrue(testRunnerHelper.validate_location(msg.payload,self.config), "Location Validation Issue") # self.assertTrue(testRunnerHelper.validate_datetime(msg.payload,self.config), "Temporal Validation Issue") else: record_count += 1 self.logger.info('Received %d results', record_count) self.assertGreaterEqual( record_count, kwargs.get('min_records', 5), "Did Not receive at least {} records from the ODE".format( kwargs.get('min_records', 5))) self.assertLessEqual( record_count, kwargs.get('limit', 100), "Received more than the requested amount of records. Request at most {} records" .format(kwargs.get('limit', 100))) self.assertEqual(len(exception_list), 0, "Encountered More than expected Validation Errors")