示例#1
0
class CdsSpeedTestCase(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(CdsSpeedTestCase, self).__init__(*args, **kwargs)
        logging.basicConfig(format='%(asctime)s - %(levelname)s [%(filename)s:%(lineno)s %(funcName)20s] %(message)s',
                            level=logging.INFO,
                            handlers=[logging.StreamHandler()])

        logger = logging.getLogger("vrnbus")
        self.mock_provider = CdsDBDataProvider(logger)
        self.cds = CdsRequest(logger, self.mock_provider)

    def test_avg_speed(self):
        avg_speeds = []
        for i in range(50):
            time.sleep(0.005)
            self.cds.calc_avg_speed()
            avg_speeds.append(f"{self.cds.speed_dict['5А']:.2f} {self.cds.speed_dict['125']:.2f}")
        logger.info("\n".join(avg_speeds))

    def test_speed_businfo(self):
        query = 'про'
        search_request = parse_routes(query)
        start = datetime.datetime.now()
        result = self.cds.bus_request(search_request, short_format=True)
        finish = datetime.datetime.now()
        logger.info(f"{finish - start}")
示例#2
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        logging.basicConfig(format='%(asctime)s - %(levelname)s [%(filename)s:%(lineno)s %(funcName)20s] %(message)s',
                            level=logging.INFO,
                            handlers=[logging.StreamHandler()])

        logger = logging.getLogger("vrnbus")
        self.mock_provider = CdsTestDataProvider(logger)
        self.cds = CdsRequest(logger, self.mock_provider)
示例#3
0
class CdsBusStopIndexTestCase(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        logging.basicConfig(format='%(asctime)s - %(levelname)s [%(filename)s:%(lineno)s %(funcName)20s] %(message)s',
                            level=logging.INFO,
                            handlers=[logging.StreamHandler()])

        logger = logging.getLogger("vrnbus")
        self.mock_provider = CdsTestDataProvider(logger)
        self.cds = CdsRequest(logger, self.mock_provider)

    def test_get_index_by_name(self):
        result = self.cds.get_bus_stop_id("ул. Кирова (в центр)")
        self.assertIsInstance(result, int)

    def test_get_index_for_wrong_name(self):
        result = self.cds.get_bus_stop_id("NOT A STATION")
        self.assertIsInstance(result, int)
        self.assertEqual(result, -1)

    def test_get_bus_stop_for_index(self):
        result = self.cds.get_bus_stop_from_id(42)
        self.assertIsInstance(result, BusStop)

    def test_get_busstop_for_outrange_indexes(self):
        self.assertIsNone(self.cds.get_bus_stop_from_id(-1))
        self.assertIsNone(self.cds.get_bus_stop_from_id(100500))

    def test_routes_on_near_stations(self):
        # TODO: Find the test case for 49A
        routes_1 = self.cds.get_routes_on_bus_stop("Политехнический институт (из центра)")
        routes_2 = self.cds.get_routes_on_bus_stop("Рабочий проспект (из центра)")
        self.assertListEqual(routes_1, routes_2)
示例#4
0
class CdsBusStopIndexTestCase(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        logging.basicConfig(
            format=
            '%(asctime)s - %(levelname)s [%(filename)s:%(lineno)s %(funcName)20s] %(message)s',
            level=logging.INFO,
            handlers=[logging.StreamHandler()])

        logger = logging.getLogger("vrnbus")
        self.mock_provider = CdsTestDataProvider(logger)
        self.cds = CdsRequest(logger, self.mock_provider)

    def test_get_index_by_name(self):
        result = self.cds.get_bus_stop_id("ул. Кирова (в центр)")
        self.assertIsInstance(result, int)

    def test_get_index_for_wrong_name(self):
        result = self.cds.get_bus_stop_id("NOT A STATION")
        self.assertIsInstance(result, int)
        self.assertEqual(result, -1)

    def test_get_index_by_name(self):
        result = self.cds.get_bus_stop_id("ул. Кирова (в центр)")
        self.assertIsInstance(result, int)

    def test_get_bus_stop_for_index(self):
        result = self.cds.get_bus_stop_from_id(42)
        self.assertIsInstance(result, BusStop)

    def test_get_busstop_for_outrange_indexes(self):
        self.assertIsNone(self.cds.get_bus_stop_from_id(-1))
        self.assertIsNone(self.cds.get_bus_stop_from_id(100500))
示例#5
0
class CdsBusArrivalTestCases(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        logging.basicConfig(format='%(asctime)s - %(levelname)s [%(filename)s:%(lineno)s %(funcName)20s] %(message)s',
                            level=logging.INFO,
                            handlers=[logging.StreamHandler()])

        self.logger = logging.getLogger("vrnbus")
        self.tracker = EventTracker(logger, [])
        self.mock_provider = CdsTestDataProvider(logger)
        self.cds = CdsRequest(logger, self.mock_provider)
        self.processor = WebDataProcessor(self.cds, self.logger, self.tracker)

    def test_arrival(self):
        result = self.processor.get_arrival("про 49 5а", 51.692727, 39.18297)
        stops = result['bus_stops']
        counts = 0
        for k, v in stops.items():
            self.logger.info(k)
            self.logger.info(v)
            counts += len(v.split('\n'))
            break
        self.logger.info(result)
        self.logger.info(counts)

    def test_businfo(self):
        result = self.processor.get_bus_info("про 49 5а", 51.692727, 39.18297, True)
        self.logger.info(result)

    def test_arrival_distance(self):
        src = 'Центральный автовокзал (в центр)'
        dst = 'Площадь Застава (в центр)'
        wrong_direction = self.cds.get_dist("27", dst, src)
        right_direction = self.cds.get_dist("27", src, dst)
        self.assertTrue(wrong_direction == 0)
        self.assertGreater(right_direction, 0)

    def test_arrival_by_id(self):
        for i in range(500):
            result = self.processor.get_arrival_by_id("pro", i)
            self.assertTrue(result['arrival_info']['found'])
示例#6
0
class CdsSpeedTestCase(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(CdsSpeedTestCase, self).__init__(*args, **kwargs)
        logging.basicConfig(
            format=
            '%(asctime)s - %(levelname)s [%(filename)s:%(lineno)s %(funcName)20s] %(message)s',
            level=logging.INFO,
            handlers=[logging.StreamHandler()])

        logger = logging.getLogger("vrnbus")
        self.mock_provider = CdsTestDataProvider(logger)
        self.cds = CdsRequest(logger, self.mock_provider)

    def test_speed_businfo(self):
        query = 'про 1КВ 1КС 3 3В 5 5А 6 6М 8 9КА 9КС 10А 11 13 14В 15 15А 16В 17 18 23К 25А 26А 27 33К Тр.7 Тр.8 Тр.11 Тр.17'
        search_request = parse_routes(query)
        start = datetime.datetime.now()
        result = self.cds.bus_request(search_request, short_format=True)
        logger.info("PING")
        finish = datetime.datetime.now()
        logger.info(f"{finish - start}")
示例#7
0
 def test_mock(self):
     cds = CdsRequest(logger, self.mock_provider)
     self.call_common_methods(cds)
示例#8
0
 def test_db(self):
     self.db_provider = CdsDBDataProvider(logger)
     cds = CdsRequest(logger, self.db_provider)
     self.call_common_methods(cds)
示例#9
0
 def __init__(self, *args, **kwargs):
     super(CdsRouteTestCase, self).__init__(*args, **kwargs)
     self.mock_provider = CdsTestDataProvider(logger)
     self.cds = CdsRequest(logger, self.mock_provider)
     self.date_time = datetime.datetime(2018, 2, 15, 19, 56, 53)
示例#10
0
class CdsRouteTestCase(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(CdsRouteTestCase, self).__init__(*args, **kwargs)
        self.mock_provider = CdsTestDataProvider(logger)
        self.cds = CdsRequest(logger, self.mock_provider)
        self.date_time = datetime.datetime(2018, 2, 15, 19, 56, 53)

    def test_routes_on_bus_stop(self):
        result = self.cds.get_routes_on_bus_stop(57)
        self.assertTrue(result)

    def test_bus_stop_distance(self):
        route_name = "5А"
        stop_1 = "у-м Молодежный (ул. Лизюкова в центр)"
        stop_2 = "ул. Лизюкова (ул. Жукова в центр)"

        with self.subTest('Normal bus station order'):
            result = self.cds.get_dist(route_name, stop_1, stop_2)
            self.assertTrue(result)

        with self.subTest('Reverse bus station order'):
            result = self.cds.get_dist(route_name, stop_2, stop_1)
            self.assertFalse(result)

    def test_closest_bus_stop_checked(self):
        route_name = '5А'
        pos_1 = CdsBusPosition(51.705497, 39.149543, self.date_time)  # у-м Молодёжный
        pos_2 = CdsBusPosition(51.705763, 39.155278, self.date_time)  # 60 лет ВЛКСМ

        with self.subTest('From city center '):
            result = self.cds.get_closest_bus_stop_checked(route_name, (pos_2, pos_1))
            self.assertTrue(result.NAME_ == 'у-м Молодежный (ул. Лизюкова из центра)')
            self.assertEqual(result.NUMBER_, 62)

        with self.subTest('To city center '):
            result = self.cds.get_closest_bus_stop_checked(route_name, (pos_1, pos_2))
            self.assertEqual(result.NUMBER_, 5)

    def test_closest_bus_stop_same_stations(self):
        positions = [CdsBusPosition(51.667033, 39.193648, self.date_time),
                     CdsBusPosition(51.672135, 39.187541, self.date_time),
                     CdsBusPosition(51.675065, 39.185286, self.date_time),
                     CdsBusPosition(51.677922, 39.184953, self.date_time),
                     CdsBusPosition(51.677922, 39.184953, self.date_time),
                     CdsBusPosition(51.680843, 39.184798, self.date_time)]

        result = self.cds.get_closest_bus_stop_checked("90", positions)

        self.assertTrue(result.NUMBER_ == 40)
        self.assertTrue(result.NAME_ == 'Проспект Труда (Московский проспект из центра)')

    def test_closest_bus_stop(self):
        route_bus = CdsRouteBus.make(*[
            51.625537, 39.177478,
            16,
            "2018-02-15T19:57:47",
            "М617АК136",
            834,
            20,
            "80",
            0,
            "2018-02-15T19:54:56",
            "Рабочий проспект (из центра)"
        ])

        station = self.cds.get_closest_bus_stop(route_bus)
        logger.info(f"{station}; {route_bus.distance_km(station):.4f}  {route_bus.distance(station):.4f}")
示例#11
0
    format=
    '%(asctime)s.%(msecs)03d - %(levelname)s [%(filename)s:%(lineno)s %(funcName)10s] %(message)s',
    datefmt="%H:%M:%S",
    level=logging.INFO,
    handlers=[logging.StreamHandler(), file_handler])

logger = logging.getLogger("vrnbus")

logger.info([{k: os.environ[k]} for (k) in os.environ if 'PATH' not in k])

LOAD_TEST_DATA = False

try:
    import settings
    LOAD_TEST_DATA = settings.LOAD_TEST_DATA
except ImportError:
    settings = None

user_settings = {}

if __name__ == "__main__":
    tracker = EventTracker(logger)
    data_provider = CdsTestDataProvider(
        logger) if LOAD_TEST_DATA else CdsDBDataProvider(logger)
    cds = CdsRequest(logger, data_provider)
    data_processor = WebDataProcessor(cds, logger)
    bot = BusBot(cds, user_settings, logger, tracker)
    application = BusSite(data_processor, logger, tracker)
    application.listen(os.environ.get('PORT', 8080))
    tornado.ioloop.IOLoop.instance().start()
示例#12
0
if not Path('logs').is_dir():
    Path('logs').mkdir()

# Enable logging
file_handler = TimedRotatingFileHandler("logs/vrnbus.log", 'midnight', 1)
file_handler.suffix = "%Y-%m-%d"
# noinspection SpellCheckingInspection
logging.basicConfig(
    format=
    '%(asctime)s - %(levelname)s [%(filename)s:%(lineno)s %(funcName)20s] %(message)s',
    level=logging.INFO,
    handlers=[logging.StreamHandler(), file_handler])

logger = logging.getLogger("vrnbus")

logger.info([{k: os.environ[k]} for (k) in os.environ if 'PATH' not in k])
if 'DYNO' in os.environ:
    debug = False
else:
    debug = True

user_settings = {}

if __name__ == "__main__":
    cds = CdsRequest(logger)
    bot = BusBot(cds, user_settings, logger)
    application = BusSite(cds, logger, debug)
    application.listen(os.environ.get('PORT', 8080))
    tornado.ioloop.IOLoop.instance().start()
示例#13
0
 def test_db(self):
     cds = CdsRequest(logger, self.db_provider)
     self.call_common_methods(cds)
示例#14
0
 def __init__(self, *args, **kwargs):
     super(CdsRouteTestCase, self).__init__(*args, **kwargs)
     self.cds = CdsRequest(logger, None)
     self.date_time = datetime.datetime(2018, 2, 15, 19, 56, 53)