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')
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')
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')
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')
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')
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()
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')
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 )
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')