예제 #1
0
    def test_asset_events(self):

        c = CityIq(Config(cache_objects='/tmp'))

        start = c.tz.localize(datetime(2019, 1, 1, 0, 0, 0))
        end = c.tz.localize(datetime(2019, 1, 31, 0, 0, 0))

        a = c.get_asset('ff0cfb97-d1d5-463a-b36f-2626421b5e8d')

        ft = FetchTask(0, a, 'PKIN', start, end, overwrite=True)

        events1 = ft.run()

        print(len(events1))
예제 #2
0
    def test_bicycle_events(self):
        api_logger.setLevel(logging.DEBUG)

        c = CityIq(self.config)

        a = c.get_asset('0e5d0a42-8c9e-49fd-9bd7-6ccdf69f840e')

        # Clean everything

        c._clean_cache(a, 'BICYCLE', '2020-01-01', '2020-02-01')

        e = c.get_cached_events(a, 'BICYCLE', '2020-01-10', '2020-01-15')

        self.assertEqual(0, len(e))

        # Cache events in ranges.

        c.cache_events(a, 'BICYCLE', '2020-01-01', '2020-01-05')

        e = c.get_cached_events(a, 'BICYCLE', '2020-01-01', '2020-02-01')
        self.assertEqual(22942, len(e))
        self.assertEqual('2020-01-01', str(e.timestamp.min().date()))
        self.assertEqual('2020-01-04', str(e.timestamp.max().date()))

        c.cache_events(a, 'BICYCLE', '2020-01-10', '2020-01-15')
        c.cache_events(a, 'BICYCLE', '2020-01-20', '2020-01-25')

        e = c.get_cached_events(a, 'BICYCLE', '2020-01-01', '2020-02-01')
        self.assertEqual(80212, len(e))
        self.assertEqual('2020-01-01', str(e.timestamp.min().date()))
        self.assertEqual('2020-01-24', str(e.timestamp.max().date()))

        c.cache_events(a, 'BICYCLE', '2020-01-04', '2020-01-11')
        c.cache_events(a, 'BICYCLE', '2020-01-01', '2020-02-01')

        e = c.get_cached_events(a, 'BICYCLE', '2020-01-01', '2020-02-01')
        self.assertEqual(177568, len(e))
        self.assertEqual('2020-01-01', str(e.timestamp.min().date()))
        self.assertEqual('2020-01-31', str(e.timestamp.max().date()))

        # Check a subrange.
        e = c.get_cached_events(a, 'BICYCLE', '2020-01-10', '2020-01-15')

        self.assertEqual(28670, len(e))
        self.assertEqual('2020-01-10', str(e.timestamp.min().date()))
        self.assertEqual('2020-01-14', str(e.timestamp.max().date()))

        c._clean_cache(a, 'BICYCLE', '2020-01-01', '2020-02-01')
        e = c.get_cached_events(a, 'BICYCLE', '2020-01-10', '2020-01-15')
        self.assertEqual(0, len(e))
예제 #3
0
    def test_make_events(self):
        c = CityIq(self.config)

        a = c.get_asset('0e5d0a42-8c9e-49fd-9bd7-6ccdf69f840e')

        tasks = c.make_tasks([a], ['PKIN', 'PKOUT'], '2020-01-01',
                             '2020-03-01')

        self.assertEqual(24, len(tasks))

        dates = list(sorted([t.start_date.isoformat() for t in tasks]))

        self.assertEqual([
            '2020-01-01T00:00:00-08:00', '2020-01-01T00:00:00-08:00',
            '2020-01-06T00:00:00-08:00', '2020-01-06T00:00:00-08:00',
            '2020-01-11T00:00:00-08:00', '2020-01-11T00:00:00-08:00',
            '2020-01-16T00:00:00-08:00', '2020-01-16T00:00:00-08:00'
        ], dates[:8])
예제 #4
0
    def test_async_events(self):
        api_logger.setLevel(logging.DEBUG)

        c = CityIq(self.config)

        assets = list(c.assets_by_event(['PKIN', 'PKOUT']))

        self.assertEqual(2590, len(assets))

        assets = [
            c.get_asset(u) for u in [
                '094c05dc-6378-476b-817d-21ba3b99f8ab',
                '09741091-c77e-4d61-9a14-d489bd061975',
                '09aa6fad-0ae3-4256-906b-8e82c82eeacb',
                '09b58810-dd7b-40f2-b183-aef265db4681',
                '09f05731-a47e-41e6-970b-9fae943bfd3f',
                '09fdcb8e-9498-4c9e-8612-afdfd0487f64',
                '0a2f68d2-b283-4835-a775-a209645cebb2',
                '0a2ff822-6ba2-4f11-a6a0-b7f080b7ad08',
                '0a31fd96-f288-411c-8e50-f07b0b532462',
                '0a3e5df5-0738-4f3f-9ab8-1498adfde99c'
            ]
        ]

        tasks = c.make_tasks(assets, ['PKIN', 'PKOUT'], '2020-01-01',
                             '2020-02-01')

        self.assertEqual(140, len(tasks))  # one per asset/event type

        list(c.run_async(tasks))

        df = c.get_cached_events(assets, ['PKIN', 'PKOUT'], '2020-01-01',
                                 '2020-02-01')

        print(len(df))
        print(df.head())