From b45e25ea9337b54ab0c22f04ee5604d0282df698 Mon Sep 17 00:00:00 2001 From: Igor Abdrakhimov Date: Tue, 2 Jan 2024 14:45:37 -0800 Subject: [PATCH] Fix race condition --- servicetests/test_cases/test_shadow_update.py | 2 +- .../tests/ShadowUpdate/shadow_update.py | 43 +------------------ 2 files changed, 3 insertions(+), 42 deletions(-) diff --git a/servicetests/test_cases/test_shadow_update.py b/servicetests/test_cases/test_shadow_update.py index 5b62557d..3bd6b774 100644 --- a/servicetests/test_cases/test_shadow_update.py +++ b/servicetests/test_cases/test_shadow_update.py @@ -81,7 +81,7 @@ def main(): print("Verifying that shadow was updated") shadow_value = None i = 0 - while i < 20: + while i < 10: try: if shadow_name: thing_shadow = iot_data_client.get_thing_shadow(thingName=thing_name, shadowName=shadow_name) diff --git a/servicetests/tests/ShadowUpdate/shadow_update.py b/servicetests/tests/ShadowUpdate/shadow_update.py index 00d5116d..8c89cb2d 100644 --- a/servicetests/tests/ShadowUpdate/shadow_update.py +++ b/servicetests/tests/ShadowUpdate/shadow_update.py @@ -100,7 +100,6 @@ def on_get_shadow_accepted(response): value = response.state.delta.get(shadow_property) if value: print(" Shadow contains delta value '{}'.".format(value)) - change_shadow_value(value) return if response.state.reported: @@ -108,9 +107,6 @@ def on_get_shadow_accepted(response): if value: print(" Shadow contains reported value '{}'.".format(value)) return - - print(" Shadow document lacks '{}' property. Setting defaults...".format(shadow_property)) - change_shadow_value(SHADOW_VALUE_DEFAULT) return except Exception as e: @@ -128,12 +124,8 @@ def on_get_shadow_rejected(error): print("Ignoring get_shadow_rejected message due to unexpected token.") return - if error.code == 404: - print("Thing has no shadow document. Creating with defaults...") - change_shadow_value(SHADOW_VALUE_DEFAULT) - else: - exit("Get request was rejected. code:{} message:'{}'".format( - error.code, error.message)) + if error.code != 404: + exit("Get request was rejected. code:{} message:'{}'".format(error.code, error.message)) except Exception as e: exit(e) @@ -193,32 +185,6 @@ def on_update_shadow_rejected(error): exit(e) -def change_shadow_value(value): - with locked_data.lock: - - print("Changed local shadow value to '{}'.".format(value)) - locked_data.shadow_value = value - - print("Updating reported shadow value to '{}'...".format(value)) - - # use a unique token so we can correlate this "request" message to - # any "response" messages received on the /accepted and /rejected topics - token = str(uuid4()) - - # if the value is "none" then set it to a Python none object to - request = iotshadow.UpdateShadowRequest( - thing_name=shadow_thing_name, - state=iotshadow.ShadowState( - reported={shadow_property: value}, - desired={shadow_property: value}, - ), - client_token=token, - ) - future = shadow_client.publish_update_shadow(request, mqtt_qos) - locked_data.request_tokens.add(token) - future.add_done_callback(on_publish_update_shadow) - - def update_event_received(response): print("Update Event Received\n") print("Current response", response.current) @@ -387,8 +353,6 @@ def update_shadow(): update_thing_update_future = shadow_client.publish_update_shadow(request = iotshadow.UpdateShadowRequest (thing_name = shadow_thing_name, state=state), qos=mqtt_qos) - - change_shadow_value(cmdData.input_shadow_value) update_thing_update_future.result() except Exception as e: @@ -470,6 +434,3 @@ def update_shadow(): exit(0) # Wait for the sample to finish is_sample_done.wait() - - -