Commit d69c8cf9ca7035de60acaf18054d03bccdf36756

Authored by Stéphane Raimbault
1 parent 7e42fcf0

Fix too low response timeouts in unit tests

The response timeout of the client must be higher than the server
to handle sleep/flush operations done on server side.
Showing 1 changed file with 12 additions and 1 deletions
tests/unit-test-client.c
@@ -746,6 +746,16 @@ int send_crafted_request(modbus_t *ctx, int function, @@ -746,6 +746,16 @@ int send_crafted_request(modbus_t *ctx, int function,
746 const int EXCEPTION_RC = 2; 746 const int EXCEPTION_RC = 2;
747 uint8_t rsp[MODBUS_TCP_MAX_ADU_LENGTH]; 747 uint8_t rsp[MODBUS_TCP_MAX_ADU_LENGTH];
748 int j; 748 int j;
  749 + uint32_t old_response_to_sec;
  750 + uint32_t old_response_to_usec;
  751 +
  752 + /* This requests can generate flushes server side so we need a higher
  753 + * response timeout than the server. The server uses the defined response
  754 + * timeout to sleep before flushing.
  755 + * The old timeouts are restored at the end.
  756 + */
  757 + modbus_get_response_timeout(ctx, &old_response_to_sec, &old_response_to_usec);
  758 + modbus_set_response_timeout(ctx, 0, 600000);
749 759
750 for (j=0; j<2; j++) { 760 for (j=0; j<2; j++) {
751 int rc; 761 int rc;
@@ -781,8 +791,9 @@ int send_crafted_request(modbus_t *ctx, int function, @@ -781,8 +791,9 @@ int send_crafted_request(modbus_t *ctx, int function,
781 rsp[backend_offset] == (0x80 + function) && 791 rsp[backend_offset] == (0x80 + function) &&
782 rsp[backend_offset + 1] == MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE, ""); 792 rsp[backend_offset + 1] == MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE, "");
783 } 793 }
784 - 794 + modbus_set_response_timeout(ctx, old_response_to_sec, old_response_to_usec);
785 return 0; 795 return 0;
786 close: 796 close:
  797 + modbus_set_response_timeout(ctx, old_response_to_sec, old_response_to_usec);
787 return -1; 798 return -1;
788 } 799 }