example_test.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from __future__ import unicode_literals
  2. import datetime
  3. import re
  4. import ttfw_idf
  5. from tiny_test_fw import Utility
  6. @ttfw_idf.idf_example_test(env_tag='Example_WIFI_Protocols')
  7. def test_examples_sntp(env, extra_data):
  8. dut = env.get_dut('sntp', 'examples/protocols/sntp')
  9. dut.start_app()
  10. dut.expect_all('Time is not set yet. Connecting to WiFi and getting time over NTP.',
  11. 'Initializing SNTP',
  12. 'Waiting for system time to be set... (1/10)',
  13. 'Notification of a time synchronization event',
  14. timeout=60)
  15. TIME_FORMAT = '%a %b %d %H:%M:%S %Y'
  16. TIME_FORMAT_REGEX = r'\w+\s+\w+\s+\d{1,2}\s+\d{2}:\d{2}:\d{2} \d{4}'
  17. TIME_DIFF = datetime.timedelta(seconds=10 + 2) # cpu spends 10 seconds in deep sleep
  18. NY_time = None
  19. SH_time = None
  20. def check_time(prev_NY_time, prev_SH_time):
  21. NY_str = dut.expect(re.compile(r'The current date/time in New York is: ({})'.format(TIME_FORMAT_REGEX)))[0]
  22. SH_str = dut.expect(re.compile(r'The current date/time in Shanghai is: ({})'.format(TIME_FORMAT_REGEX)))[0]
  23. Utility.console_log('New York: "{}"'.format(NY_str))
  24. Utility.console_log('Shanghai: "{}"'.format(SH_str))
  25. dut.expect('Entering deep sleep for 10 seconds')
  26. Utility.console_log('Sleeping...')
  27. new_NY_time = datetime.datetime.strptime(NY_str, TIME_FORMAT)
  28. new_SH_time = datetime.datetime.strptime(SH_str, TIME_FORMAT)
  29. # The initial time is not checked because datetime has problems with timezones
  30. assert prev_NY_time is None or new_NY_time - prev_NY_time < TIME_DIFF
  31. assert prev_SH_time is None or new_SH_time - prev_SH_time < TIME_DIFF
  32. return (new_NY_time, new_SH_time)
  33. NY_time, SH_time = check_time(NY_time, SH_time)
  34. for i in range(2, 4):
  35. dut.expect('example: Boot count: {}'.format(i), timeout=30)
  36. NY_time, SH_time = check_time(NY_time, SH_time)
  37. if __name__ == '__main__':
  38. test_examples_sntp()