예제 #1
0
    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")
예제 #2
0
    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")
예제 #3
0
 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))
예제 #4
0
 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))
예제 #5
0
 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))
예제 #6
0
    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")