Пример #1
0
    def test_series_values_after_report_instance_deletion_multiple_days(self):
        owner_id = uuid.uuid1()
        r = reports.Report.insert(owner_id, 'rname')

        sd_id = dataseries.SeriesDef.select_id_or_insert(
            r.report_id, [],
            dataseries.SeriesSpec(0, -1, {
                'op': 'eq',
                'args': ['0']
            }))
        sd = dataseries.SeriesDef.select(r.report_id, [], sd_id)

        r.process_input('1', created=utcnow() - timedelta(days=10))
        r.process_input('2', created=utcnow() - timedelta(days=5))

        values = dataseries.get_series_values(sd, r,
                                              utcnow() - timedelta(days=11),
                                              utcnow())
        self.assertEqual(2, len(values))

        r.delete_single_instance(r.fetch_instances()[1].report_instance_id)

        inst = r.fetch_instances()
        self.assertEqual(1, len(inst))
        self.assertEqual('1', inst[0].input_string)

        sd = dataseries.SeriesDef.select(r.report_id, [], sd_id)
        values = dataseries.get_series_values(sd, r,
                                              utcnow() - timedelta(days=11),
                                              utcnow())
        self.assertEqual(1, len(values))
        self.assertEqual(1, values[0].value)
Пример #2
0
    def test_creating_ri_reversed_and_fetching_series_values_in_the_middle(
            self):
        owner_id = uuid.uuid1()
        r = reports.Report.insert(owner_id, 'nums')
        sd_id = dataseries.SeriesDef.insert(
            r.report_id, [],
            dataseries.SeriesSpec(0, -1, {
                'op': 'eq',
                'args': ['0']
            }))
        sd = dataseries.SeriesDef.select(r.report_id, [], sd_id)

        for i in reversed(xrange(10, 20)):
            r.process_input(str(i), created=utcnow() - timedelta(days=i))
        expected = list(reversed(range(10, 20)))
        values = [
            sv.value for sv in dataseries.get_series_values(
                sd, r,
                utcnow() - timedelta(days=100), utcnow())
        ]
        self.assertEqual(expected, values)

        for i in reversed(xrange(0, 10)):
            r.process_input(str(i), created=utcnow() - timedelta(days=i))

        sd = dataseries.SeriesDef.select(r.report_id, [], sd_id)
        expected = list(reversed(range(0, 20)))
        values = [
            sv.value for sv in dataseries.get_series_values(
                sd, r,
                utcnow() - timedelta(days=100), utcnow())
        ]
        self.assertEqual(expected, values)
Пример #3
0
    def _set_series_data(self,
                         data,
                         from_dt=None,
                         to_dt=None,
                         after=None,
                         limit=None):
        data['series_data'] = []

        series_def_list = dataseries.SeriesDef.select_multi(
            self.tile.report_id,
            [(self.tile.tags, sc['series_id'])
             for sc in self.tile_options['series_configs']])

        latest_instance_id = self.tile.report.fetch_latest_instance_id(
            self.tile.tags)

        for series_def, series_config in zip(
                series_def_list, self.tile_options['series_configs']):
            if not series_def:
                log.warn(
                    'tile_data: series_def does not exist for report_id=%s series_config=%s',
                    self.tile.report_id, series_config)
                continue

            if from_dt is not None or to_dt is not None:
                rows = dataseries.get_series_values(
                    series_def,
                    self.tile.report,
                    data['fetched_from_dt'],
                    data['fetched_to_dt'],
                    limit=limit or mqeconfig.MAX_SERIES_POINTS_IN_TILE,
                    latest_instance_id=latest_instance_id)
            else:
                assert after is not None
                rows = dataseries.get_series_values_after(
                    series_def,
                    self.tile.report,
                    after,
                    limit or mqeconfig.MAX_SERIES_POINTS_IN_TILE,
                    latest_instance_id=latest_instance_id)

            value_list = []
            common_header = CommonValue()
            for row in rows:
                value_list.append(DataPoint.from_series_value(row))
                if row.header:
                    common_header.present(row.header)

            data['series_data'].append({
                'series_id':
                series_def.series_id,
                'name':
                series_def.series_spec.name(True),
                'data_points':
                value_list,
                'common_header':
                common_header.value,
            })
Пример #4
0
 def values(tags):
     sd_id = dataseries.SeriesDef.select_id_or_insert(
         cd.report.report_id, tags,
         dataseries.guess_series_spec(cd.report, cd.instances[0], 0, 0))
     sd = dataseries.SeriesDef.select(cd.report.report_id, tags, sd_id)
     res = dataseries.get_series_values(
         sd, cd.report,
         datetime.datetime.utcnow() - datetime.timedelta(days=1),
         datetime.datetime.utcnow(), 1000)
     return [sv.value for sv in res]
Пример #5
0
    def test_same_dt(self):
        owner_id = uuid.uuid1()
        r = reports.Report.insert(owner_id, 'rname')

        sd_id = dataseries.SeriesDef.select_id_or_insert(
            r.report_id, [],
            dataseries.SeriesSpec(0, -1, {
                'op': 'eq',
                'args': ['0']
            }))
        sd = dataseries.SeriesDef.select(r.report_id, [], sd_id)

        for i in range(10):
            r.process_input(str(i), created=datetime.datetime(2017, 5, 5))

        values = dataseries.get_series_values(sd, r,
                                              datetime.datetime(2017, 5, 1),
                                              utcnow())
        self.assertEqual(10, len(values))
        self.assertEqual(set(range(10)), set([v.value for v in values]))

        values = dataseries.get_series_values(sd, r,
                                              datetime.datetime(2017, 5, 5),
                                              utcnow())
        self.assertEqual(10, len(values))
        self.assertEqual(set(range(10)), set([v.value for v in values]))

        values = dataseries.get_series_values(sd, r,
                                              datetime.datetime(2017, 5, 5),
                                              datetime.datetime(2017, 5, 5))
        self.assertEqual(10, len(values))
        self.assertEqual(set(range(10)), set([v.value for v in values]))

        values = dataseries.get_series_values(
            sd, r, datetime.datetime(2017, 5, 5, 0, 0, 0, 1),
            datetime.datetime(2017, 5, 5, 0, 0, 0, 1))
        self.assertEqual(0, len(values))
Пример #6
0
    def test_get_series_values(self):
        sd = self.test_series_def_select_or_insert()
        res = dataseries.get_series_values(
            sd,
            report_data('points').report,
            datetime.datetime.utcnow() - datetime.timedelta(days=1),
            datetime.datetime.utcnow(), 1000)
        self.assertEqual([210, 220, 265], [sv.value for sv in res])
        self.assertEqual(['points', 'points', 'points'],
                         [sv.header for sv in res])

        res = dataseries.get_series_values(
            sd,
            report_data('points').report, datetime.datetime.utcnow(),
            datetime.datetime.utcnow() + datetime.timedelta(seconds=1), 1000)
        self.assertEqual([], res)

        res = dataseries.get_series_values(
            sd,
            report_data('points').report,
            datetime.datetime.utcnow() - datetime.timedelta(days=1),
            datetime.datetime.utcnow(), 2)
        self.assertEqual([220, 265], [sv.value for sv in res])
        self.assertEqual(['points', 'points'], [sv.header for sv in res])
Пример #7
0
    def test_get_series_values_multiple_inserts(self):
        cd = CustomData(range(20))
        sd_id = dataseries.SeriesDef.select_id_or_insert(
            cd.report.report_id, [],
            dataseries.guess_series_spec(cd.report, cd.instances[0], 0, 0))
        sd = dataseries.SeriesDef.select(cd.report.report_id, [], sd_id)
        res = dataseries.get_series_values(
            sd, cd.report,
            datetime.datetime.utcnow() - datetime.timedelta(days=1),
            datetime.datetime.utcnow(), 1000)
        self.assertEqual(range(20), [sv.value for sv in res])

        cd.report.process_input('200')
        sd = dataseries.SeriesDef.select(cd.report.report_id, [], sd_id)
        res = dataseries.get_series_values(
            sd, cd.report,
            datetime.datetime.utcnow() - datetime.timedelta(days=1),
            datetime.datetime.utcnow(), 1000)
        self.assertEqual(range(20) + [200], [sv.value for sv in res])

        cd.report.process_input('200')
        sd = dataseries.SeriesDef.select(cd.report.report_id, [], sd_id)
        res = dataseries.get_series_values(
            sd, cd.report,
            datetime.datetime.utcnow() - datetime.timedelta(days=1),
            datetime.datetime.utcnow(), 1000)
        self.assertEqual(range(20) + [200, 200], [sv.value for sv in res])

        cd.report.process_input('80',
                                created=datetime.datetime.utcnow() -
                                datetime.timedelta(seconds=10))
        sd = dataseries.SeriesDef.select(cd.report.report_id, [], sd_id)
        res = dataseries.get_series_values(
            sd, cd.report,
            datetime.datetime.utcnow() - datetime.timedelta(days=1),
            datetime.datetime.utcnow(), 1000)
        self.assertEqual([80] + range(20) + [200, 200],
                         [sv.value for sv in res])

        ri = cd.report.process_input('200').report_instance
        sd = dataseries.SeriesDef.select(cd.report.report_id, [], sd_id)
        res = dataseries.get_series_values(
            sd, cd.report,
            datetime.datetime.utcnow() - datetime.timedelta(days=1),
            datetime.datetime.utcnow(), 1000)
        self.assertEqual([80] + range(20) + [200, 200, 200],
                         [sv.value for sv in res])

        cd.report.process_input('300',
                                created=ri.created -
                                datetime.timedelta(milliseconds=1))
        sd = dataseries.SeriesDef.select(cd.report.report_id, [], sd_id)
        res = dataseries.get_series_values(
            sd, cd.report,
            datetime.datetime.utcnow() - datetime.timedelta(days=1),
            datetime.datetime.utcnow(), 1000)
        self.assertEqual([80] + range(20) + [200, 200, 300, 200],
                         [sv.value for sv in res])

        # tags
        cd.report.process_input('400',
                                created=ri.created -
                                datetime.timedelta(milliseconds=2),
                                tags=['aaa'])
        sd = dataseries.SeriesDef.select(cd.report.report_id, [], sd_id)
        res = dataseries.get_series_values(
            sd, cd.report,
            datetime.datetime.utcnow() - datetime.timedelta(days=1),
            datetime.datetime.utcnow(), 1000)
        self.assertEqual([80] + range(20) + [200, 200, 400, 300, 200],
                         [sv.value for sv in res])
Пример #8
0
def main():
    vars = tutorial.main()
    owner_id = vars['owner_id']
    owner_dashboards = vars['owner_dashboards']
    dashboard = vars['dashboard']
    points_report = vars['points_report']

    SECTION('Label-less report instances')

    numbers = Report.select_or_insert(owner_id, 'numbers')
    input = """\
    10 20 30
    40 50 60
    """
    res = numbers.process_input(input)

    series_spec = SeriesSpec(1, -1, {'op': 'eq', 'args': ['1']})
    print series_spec.get_cell(res.report_instance)

    metric = Report.select_or_insert(owner_id, 'metric')
    res = metric.process_input('32.4')

    series_spec = SeriesSpec(0, -1, {'op': 'eq', 'args': ['0']})
    print series_spec.get_cell(res.report_instance)

    SECTION('Handling reordering of columns')

    input = """\
    user_name is_active points
    john      true      128
    monique   true      210
    """
    res = points_report.process_input(input, force_header=[0])

    series_spec = SeriesSpec(2, 0, {'op': 'eq', 'args': ['monique']})
    print series_spec.get_cell(res.report_instance)

    input_2 = """\
    user_name points is_active
    john      128    true     
    monique   210    true     
    """
    res_2 = points_report.process_input(input_2, force_header=[0])
    print series_spec.get_cell(res_2.report_instance)

    series_spec.promote_colnos_to_headers(res.report_instance)
    print series_spec.get_cell(res_2.report_instance)

    SECTION('A lower-level interface to data series')

    from mqe.dataseries import SeriesDef, get_series_values
    from datetime import datetime

    series_spec = SeriesSpec(2, 0, {'op': 'eq', 'args': ['monique']})
    series_id = SeriesDef.insert(points_report.report_id, [], series_spec)
    series_def = SeriesDef.select(points_report.report_id, [], series_id)
    series_values = get_series_values(series_def,
                                      points_report,
                                      from_dt=datetime(2017, 1, 1),
                                      to_dt=datetime(2018, 1, 1))
    point_values = [sv.value for sv in series_values]