|
12 | 12 | logging.basicConfig(level=logging.WARN) |
13 | 13 |
|
14 | 14 |
|
15 | | -def _manual_force_refresh(client, repeat=10, delay=0.1): |
16 | | - for i in range(repeat): |
| 15 | +def _manual_force_refresh(sdk_key, repeat=10, delay=0.1): |
| 16 | + client = configcatclient.get(sdk_key) |
| 17 | + for _ in range(repeat): |
17 | 18 | client.force_refresh() |
18 | 19 | sleep(delay) |
19 | 20 |
|
20 | 21 |
|
21 | 22 | class ConcurrencyTests(unittest.TestCase): |
22 | | - @pytest.mark.skipif(sys.platform == 'win32' or sys.platform == 'darwin', reason="TypeError: can't pickle _thread.lock objects") |
| 23 | + |
23 | 24 | def test_concurrency_process(self): |
24 | | - client = configcatclient.get('PKDVCLf-Hq-h-kCzMp-L7Q/psuH7BGHoUmdONrzzUOY7A') |
| 25 | + sdk_key = "PKDVCLf-Hq-h-kCzMp-L7Q/psuH7BGHoUmdONrzzUOY7A" |
| 26 | + client = configcatclient.get(sdk_key) |
25 | 27 | value = client.get_value('keySampleText', False, User('key')) |
26 | 28 | print("'keySampleText' value from ConfigCat: " + str(value)) |
27 | 29 |
|
28 | | - p1 = multiprocessing.Process(target=_manual_force_refresh, args=(client,)) |
29 | | - p2 = multiprocessing.Process(target=_manual_force_refresh, args=(client,)) |
| 30 | + p1 = multiprocessing.Process(target=_manual_force_refresh, args=(sdk_key,)) |
| 31 | + p2 = multiprocessing.Process(target=_manual_force_refresh, args=(sdk_key,)) |
30 | 32 | p1.start() |
31 | 33 | p2.start() |
32 | 34 | p1.join() |
33 | 35 | p2.join() |
34 | 36 |
|
35 | 37 | client.close() |
| 38 | + |
| 39 | + self.assertEqual(p1.exitcode, 0, "Process {0} exited with code {1}".format(p1.pid, p1.exitcode)) |
| 40 | + self.assertEqual(p2.exitcode, 0, "Process {0} exited with code {1}".format(p2.pid, p2.exitcode)) |
0 commit comments