def test_single_keys(self):
     r = Results()
     r.add_result(18, threshold=15)
     self.assertEqual(
         r.get_data(),
         [{'data': 18, 'severity': self.severity, 'threshold': 15}]
     )
 def test_multiple_single(self):
     r = Results()
     r.add_result(18)
     r.add_result(42)
     self.assertEqual(r.get_data(),
                      [{'data': 18, 'severity': self.severity},
                       {'data': 42, 'severity': self.severity}])
Пример #3
0
 def test_single(self):
     r = Results()
     r.add_result(18)
     self.assertEqual(r.get_data(), [{
         'data': 18,
         'severity': self.severity
     }])
 def test_sequence_multiple_keys(self):
     r = Results()
     r.add_results([18, 42], threshold=[15, 40])
     self.assertEqual(
         r.get_data(),
         [{'data': 18, 'severity': self.severity, 'threshold': 15},
          {'data': 42, 'severity': self.severity, 'threshold': 40}]
     )
Пример #5
0
 def test_single_keys(self):
     r = Results()
     r.add_result(18, threshold=15)
     self.assertEqual(r.get_data(), [{
         'data': 18,
         'severity': self.severity,
         'threshold': 15
     }])
    def test_sequence_multiple_invalid_keys(self):
        r = Results()
        with self.assertRaises(ValueError) as cm:
            r.add_results([88, 11], threshold=[15])
        self.assertTrue('Length' in cm.exception.args[0])

        with self.assertRaises(ValueError) as cm:
            r.add_results([88, 11], threshold=[15, 22, 33])
        self.assertTrue('Length' in cm.exception.args[0])
 def test_multiple_sequence(self):
     r = Results()
     r.add_results([18, 42])
     r.add_results([88, 11])
     self.assertEqual(r.get_data(),
                      [{'data': 18, 'severity': self.severity},
                       {'data': 42, 'severity': self.severity},
                       {'data': 88, 'severity': self.severity},
                       {'data': 11, 'severity': self.severity}])
Пример #8
0
 def test_sequence(self):
     r = Results()
     r.add_results([18, 42])
     self.assertEqual(r.get_data(), [{
         'data': 18,
         'severity': self.severity
     }, {
         'data': 42,
         'severity': self.severity
     }])
 def test_multiple_sequence_single_keys(self):
     r = Results()
     r.add_results([18, 42], threshold=15)
     r.add_results([88, 11], threshold=15)
     self.assertEqual(
         r.get_data(),
         [{'data': 18, 'severity': self.severity, 'threshold': 15},
          {'data': 42, 'severity': self.severity, 'threshold': 15},
          {'data': 88, 'severity': self.severity, 'threshold': 15},
          {'data': 11, 'severity': self.severity, 'threshold': 15}]
     )
Пример #10
0
 def test_sequence_multiple_keys(self):
     r = Results()
     r.add_results([18, 42], threshold=[15, 40])
     self.assertEqual(r.get_data(), [{
         'data': 18,
         'severity': self.severity,
         'threshold': 15
     }, {
         'data': 42,
         'severity': self.severity,
         'threshold': 40
     }])
Пример #11
0
    def test_dataframe(self):

        # create 8x4 dataframe
        dates = pandas.date_range('1/1/2000', periods=8)
        df = pandas.DataFrame(numpy.random.randn(8, 4), index=dates,
                              columns=['A', 'B', 'C', 'D'])
        data = df.to_dict('records')
        result = [dict(data=x, severity=10, threshold=90) for x in data]

        r = Results()
        r.add_results(df, severity=10, threshold=90)

        self.assertEqual(r.get_data(), result)
Пример #12
0
    def test_dataframe(self):

        # create 8x4 dataframe
        dates = pandas.date_range('1/1/2000', periods=8)
        df = pandas.DataFrame(numpy.random.randn(8, 4),
                              index=dates,
                              columns=['A', 'B', 'C', 'D'])
        data = df.to_dict('records')
        result = [dict(data=x, severity=10, threshold=90) for x in data]

        r = Results()
        r.add_results(df, severity=10, threshold=90)

        self.assertEqual(r.get_data(), result)
Пример #13
0
def local_spike(df, context, params):
    """Find conditions where local spikes occur.

    Can operate against timeseries or other data.  Optional params:

    `column`: specify column to calculate against, defaults to first non-time
        column.
    `std`:    number of standard deviations to consider as a spike,
        defaults to 2
    """
    column = params.get('column', None)
    if column is None:
        if 'time' in df:
            column = df.drop('time', axis=1).columns[0]
        else:
            column = df.columns[0]

    std = params.get('std', 2)

    # extract the column as a Series
    s = df[column]
    delta = s.std() * std

    # create a boolean index where the values exceed the delta threshold
    idx = abs(s - s.mean()) > delta

    # then use this to create a new dataframe
    results = df[idx]

    # as an example, dynamically determine severity based on size of results
    severity = len(results) * 10 if len(results) < 10 else 99

    return Results().add_results(results, severity=severity)
Пример #14
0
    def test_multiple_sequence_invalid_keys(self):
        r = Results()
        r.add_results([18, 42], threshold=15)
        with self.assertRaises(ValueError) as cm:
            r.add_results([88, 11])

        self.assertTrue('Missing data keys' in cm.exception.args[0])

        with self.assertRaises(ValueError) as cm:
            r.add_results([88, 11], foo=12)

        self.assertTrue('Invalid keys' in cm.exception.args[0])
Пример #15
0
def simple_trigger(df, context, params):
    """Find any values in column that exceed a given value.

    Required params:
    `column`: specify column to evaluate
    `value`:  threshold value, rows which exceed this value will
        be returned from the trigger
    """
    return Results().add_result((df[params['column']] > params['value']).any(),
                                severity=5)
Пример #16
0
 def test_multiple_sequence_single_keys(self):
     r = Results()
     r.add_results([18, 42], threshold=15)
     r.add_results([88, 11], threshold=15)
     self.assertEqual(r.get_data(), [{
         'data': 18,
         'severity': self.severity,
         'threshold': 15
     }, {
         'data': 42,
         'severity': self.severity,
         'threshold': 15
     }, {
         'data': 88,
         'severity': self.severity,
         'threshold': 15
     }, {
         'data': 11,
         'severity': self.severity,
         'threshold': 15
     }])
Пример #17
0
    def test_multiple_sequence_invalid_keys(self):
        r = Results()
        r.add_results([18, 42], threshold=15)
        with self.assertRaises(ValueError) as cm:
            r.add_results([88, 11])

        self.assertTrue('Missing data keys' in cm.exception.args[0])

        with self.assertRaises(ValueError) as cm:
            r.add_results([88, 11], foo=12)

        self.assertTrue('Invalid keys' in cm.exception.args[0])
Пример #18
0
    def test_sequence_multiple_invalid_keys(self):
        r = Results()
        with self.assertRaises(ValueError) as cm:
            r.add_results([88, 11], threshold=[15])
        self.assertTrue('Length' in cm.exception.args[0])

        with self.assertRaises(ValueError) as cm:
            r.add_results([88, 11], threshold=[15, 22, 33])
        self.assertTrue('Length' in cm.exception.args[0])
Пример #19
0
 def test_simple(self):
     r = Results()
     self.assertEqual(r.get_data(), [])
Пример #20
0
 def test_single_oneliner(self):
     r = Results().add_result(18)
     self.assertEqual(r.get_data(),
                      [{'data': 18, 'severity': self.severity}])
Пример #21
0
 def test_simple(self):
     r = Results()
     self.assertEqual(r.get_data(), [])