def test_simple_extraction(self): """ Test that the TransactionExtractor handles preceding bad data and only returns the actual transaction in a timely manor. """ transactions = [] def store_transaction(stream_id, transaction): transactions.append(transaction) ext = TransactionExtractor('default', 'BEGIN', 'END', store_transaction) self.assertEquals(0, len(transactions)) ext.write("rubbish") self.assertEquals(0, len(transactions)) ext.write("BEGIN\nSomething\n") self.assertEquals(0, len(transactions)) ext.write("END\n") self.assertEquals(1, len(transactions)) transaction = transactions[0].split('\n') self.assertEquals(3, len(transaction)) self.assertEquals("BEGIN", transaction[0]) self.assertEquals("Something", transaction[1]) self.assertEquals("END", transaction[2])
def _setup(self): self._con.connect() self._extractor = TransactionExtractor(0, 'BEGIN', 'END', self._handle_payload) self._mode = MODE_LIVE self._timeout = None self._last_data = None
def test_multiple_transactions(self): transactions = [] def store_transaction(stream_id, transaction): transactions.append(transaction) ext = TransactionExtractor('default', 'BEGIN', 'END', store_transaction) ext.write("""BEGIN STEP1 END BEGIN STEP2 END """) self.assertEquals(2, len(transactions)) self.assertTrue('STEP1' in transactions[0]) self.assertTrue('STEP2' in transactions[1])
# Serial Settings hostname = "127.0.0.1" port = 8099 # MQTT settings mqtt_host = "localhost" mqtt_port = 1883 mqtt_auth = ('system', 'manager') # Settings cache_collision_avoidance_delay = 1 processor_sleep = 1 watchdog_sleep = 1 commander_error_sleep = 1 reader_error_sleep = 1 drop_carriage_return = True transaction = TransactionExtractor("default", "BEGIN", "END") tcp = TcpServer(hostname, port) reader = SerialReader(transaction, 1000, tcp) commander = MqttCommander(mqtt_host, mqtt_port, mqtt_auth, send_data=True) logging_processor = IgnoreResultProcessor(LoggingProcessor()) processor = CompositeProcessor([commander.processor, logging_processor])
from serial_grabber.processor import TransformProcessor from serial_grabber.processor.UploadProcessor import UploadProcessor from ThingSpeakTransformer import ThingSpeakTransformer # Serial Settings timeout = 1 port = "/dev/ttyUSB0" baud = 57600 parity = serial.PARITY_NONE stop_bits = 1 # Settings cache_collision_avoidance_delay = 1 processor_sleep = 1 watchdog_sleep = 1 reader_error_sleep = 1 drop_carriage_return = True transaction = TransactionExtractor("default", "BEGIN SENSORS", "END SENSORS") reader = FileReader(transaction, "ThingSpeakExample.data") uploader = UploadProcessor( "http://api.thingspeak.com/update", headers={'content-type': 'application/x-www-form-urlencoded'}, ) processor = TransformProcessor(ThingSpeakTransformer(), uploader)
# MQTT settings mqtt_host = "localhost" mqtt_port = 1883 mqtt_auth = ('system', 'manager') # Settings cache_collision_avoidance_delay = 1 processor_sleep = 1 watchdog_sleep = 1 reader_error_sleep = 1 drop_carriage_return = True transaction = TransactionExtractor("default", "BEGIN DATA", "END DATA") reader = SerialReader( transaction, 1000, SerialConnection(port, baud, timeout=timeout, parity=parity, stop_bits=stop_bits)) commander = MqttCommander(mqtt_host, mqtt_port, mqtt_auth) uploadProcessor = UploadProcessor("https://example.org/cgi-bin/upload.py") processor = CompositeProcessor([commander.processor, uploadProcessor])
def create_stream(stream_id): print " ".join([format(ord(x), "02x") for x in stream_id]) return TransactionExtractor(stream_id, "BEGIN", "END")