Пример #1
0
    def test_classify_missing_start_end_time(self):
        self.query_options['device_id'] = 10
        self.retrieve_args[0] = 10

        self.query_options['classify'] = True

        query_db.retrieve_within_filters = self.retrieve_factory()
        try:
            query_db.query(self.query_options)
            self.assertFail()
        except Exception as e:
            self.assertEqual(str(e), 'Received malformed URL data: missing start_time and end_time')
Пример #2
0
    def test_events_and_diff_missing_parameters(self):
        self.query_options['device_id'] = 20
        self.retrieve_args[0] = 20

        self.query_options['events'] = True

        self.query_options['diff'] = True
        self.retrieve_args[8] = True

        query_db.retrieve_within_filters = self.retrieve_factory()
        try:
            query_db.query(self.query_options)
            self.assertFail()
        except Exception as e:
            self.assertEqual(str(e), 'Event detection requires device, start_time, end_time, data_type=P, and list_format=event')
Пример #3
0
    def test_events(self):
        self.query_options['device_id'] = 30
        self.retrieve_args[0] = 30

        self.query_options['events'] = True

        self.query_options['diff'] = True
        self.retrieve_args[8] = True

        self.query_options['start_time'] = 31
        self.retrieve_args[1] = 31

        self.query_options['end_time'] = 32
        self.retrieve_args[2] = 32

        self.query_options['type'] = 'P'
        self.retrieve_args[3] = 'P'

        self.query_options['list_format'] = 'event'
        self.retrieve_args[10] = 'event'

        self.query_options['device'] = 'baz'
        self.retrieve_args[7] = 'baz'

        query_db.retrieve_within_filters = self.retrieve_factory()
        detect_events.detect = self.detect_factory(True)
        query_db.format_list = self.format_list_factory('detect called', 'event')

        self.assertEqual(query_db.query(self.query_options), 'format_list called: event')
Пример #4
0
    def test_format_data(self):
        self.query_options['device_id'] = 50
        self.retrieve_args[0] = 50

        self.query_options['json'] = True

        query_db.retrieve_within_filters = self.retrieve_factory()
        query_db.format_list = self.format_list_factory('retrieve called', True)
        query_db.format_data = self.format_data_factory(['time', 'I', 'W', 'V', 'T'], 'retrieve called', True)

        self.assertEqual(query_db.query(self.query_options), 'format_data called')
Пример #5
0
    def test_classify(self):
        self.query_options['device_id'] = 5
        self.retrieve_args[0] = 5

        self.query_options['classify'] = True

        self.query_options['start_time'] = 6
        self.retrieve_args[1] = 6

        self.query_options['end_time'] = 7
        self.retrieve_args[2] = 7
        
        query_db.retrieve_within_filters = self.retrieve_factory()
        Analysis_3.run = self.classify_factory()

        self.assertEqual(query_db.query(self.query_options), 'classify called')
Пример #6
0
    def do_GET(self):
        try:
            parsed = url_parser.get_parse(self.path)
        except Exception as inst:
            if self.path == '/':
                self.send_response(200)
                self.send_header("Content-type", "text/plain")
                self.end_headers()
                self.wfile.write(USAGE.encode("utf-8"))
                self.wfile.flush()
            else:
                print(type(inst))
                print(inst.args)
                print(inst)

                self.send_error(404)
            return

        try:
            r = query_db.query(parsed)

            self.send_response(200)
            self.send_header("Content-type",
                             "application/json;charset=utf-8")  # Not actually using JSON format. Causes errors in Chrome when it tries to validate
            self.send_header("Access-Control-Allow-Origin", "*")
            self.end_headers()
            for line in r:
                self.wfile.write(line.encode("utf-8"))
        except Exception as inst:

            self.send_error(500)
            print(type(inst))
            print(inst.args)
            print(str(inst))

            return

        self.wfile.flush()
Пример #7
0
    def test_bare_format_list(self):
        self.query_options['device_id'] = 40
        self.retrieve_args[0] = 40

        self.query_options['start_time'] = 41
        self.retrieve_args[1] = 41

        self.query_options['end_time'] = 42
        self.retrieve_args[2] = 42

        self.query_options['type'] = 'T'
        self.retrieve_args[3] = 'T'

        self.query_options['list_format'] = True
        self.retrieve_args[10] = True

        self.query_options['device'] = 'bar'
        self.retrieve_args[7] = 'bar'

        query_db.retrieve_within_filters = self.retrieve_factory()
        query_db.format_list = self.format_list_factory('retrieve called', True)

        self.assertEqual(query_db.query(self.query_options), 'format_list called: True')
Пример #8
0
 def test_total_energy(self):
     query_db.generate_total_energy = lambda device_id, start_time, end_time, device: 157
     self.assertEqual(
         query_db.query({'device_id': 4, 'total_energy': True}),
         157
     )
Пример #9
0
 def test_missing_device_id(self):
     try:
         query_db.query({})
         self.assertFail()
     except Exception as e:
         self.assertEqual(str(e), 'Received malformed URL data: missing device_id')