def test_LoadPersistentUpdateValue( storage_populated, dispatcher, entry_notifier, is_server ): storage = storage_populated entry = storage.m_entries.get("foo2") entry.flags = NT_PERSISTENT entry.isPersistent = True fp = StringIO('[NetworkTables Storage 3.0]\ndouble "foo2"=1.0\n') assert storage.loadPersistent(fp=fp) is None entry = storage.m_entries.get("foo2") assert Value.makeDouble(1.0) == entry.value assert NT_PERSISTENT == entry.flags assert entry.isPersistent # client shouldn't send an update as id not assigned yet if is_server: # id assigned as this is the server; seq_num incremented dispatcher._queueOutgoing.assert_has_calls( [call(Message.entryUpdate(1, 2, entry.value), None, None)] ) else: assert dispatcher._queueOutgoing.call_count == 0 entry_notifier.notifyEntry.assert_has_calls( [call(1, "foo2", entry.value, NT_NOTIFY_UPDATE | NT_NOTIFY_LOCAL)] ) if not is_server: assert 2 == storage.m_entries.get("foo2").seq_num # still should be incremented
def test_SetEntryValueDifferentValue( storage_populated, is_server, dispatcher, entry_notifier ): storage = storage_populated # update with same type and different value results in value update message value = Value.makeDouble(1.0) assert storage.setEntryValue("foo2", value) entry = storage.m_entries.get("foo2") assert value == entry.value # client shouldn't send an update as id not assigned yet if is_server: # id assigned if server; seq_num incremented dispatcher._queueOutgoing.assert_has_calls( [call(Message.entryUpdate(1, 2, value), None, None)] ) else: assert dispatcher._queueOutgoing.call_count == 0 entry_notifier.notifyEntry.assert_has_calls( [call(1, "foo2", value, NT_NOTIFY_UPDATE | NT_NOTIFY_LOCAL)] ) if not is_server: assert 2 == storage.m_entries.get("foo2").seq_num # still should be incremented
def test_LoadPersistentUpdateValueFlags(storage_populated, dispatcher, entry_notifier, is_server): storage = storage_populated fp = StringIO("[NetworkTables Storage 3.0]\ndouble \"foo2\"=1.0\n") assert storage.loadPersistent(fp=fp) is None entry = storage.m_entries.get("foo2") assert Value.makeDouble(1.0) == entry.value assert NT_PERSISTENT == entry.flags # client shouldn't send an update as id not assigned yet if is_server: # id assigned as this is the server; seq_num incremented dispatcher._queueOutgoing.assert_has_calls([ call(Message.entryUpdate(1, 2, entry.value), None, None), call(Message.flagsUpdate(1, NT_PERSISTENT), None, None), ]) else: assert dispatcher._queueOutgoing.call_count == 0 entry_notifier.notifyEntry.assert_has_calls([ call(1, "foo2", entry.value, NT_NOTIFY_FLAGS | NT_NOTIFY_UPDATE | NT_NOTIFY_LOCAL) ]) if not is_server: assert 2 == storage.m_entries.get( "foo2").seq_num # still should be incremented
def test_SetEntryValueDifferentValue(storage_populated, is_server, dispatcher, entry_notifier): storage = storage_populated # update with same type and different value results in value update message value = Value.makeDouble(1.0) assert storage.setEntryValue("foo2", value) entry = storage.m_entries.get("foo2") assert value == entry.value # client shouldn't send an update as id not assigned yet if is_server: # id assigned if server; seq_num incremented dispatcher._queueOutgoing.assert_has_calls([ call(Message.entryUpdate(1, 2, value), None, None), ]) else: assert dispatcher._queueOutgoing.call_count == 0 entry_notifier.notifyEntry.assert_has_calls([ call(1, "foo2", value, NT_NOTIFY_UPDATE | NT_NOTIFY_LOCAL), ]) if not is_server: assert 2 == storage.m_entries.get( "foo2").seq_num # still should be incremented
def test_wire_entryUpdate2(msg_round_trip, proto_rev): exclude = [] if proto_rev >= 0x0300 else [4] value = Value.makeString("Oh noes") msg_round_trip(Message.entryUpdate(0x1234, 0x4321, value), exclude=exclude)
def test_wire_entryUpdate1(msg_round_trip, proto_rev): exclude = [] if proto_rev >= 0x0300 else [4] value = Value.makeBoolean(True) msg_round_trip(Message.entryUpdate(0x1234, 0x4321, value), exclude=exclude)