17db96d56Sopenharmony_ciimport multiprocessing
27db96d56Sopenharmony_ciimport random
37db96d56Sopenharmony_ciimport sys
47db96d56Sopenharmony_ciimport time
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_cidef fill_queue(queue, code):
77db96d56Sopenharmony_ci    queue.put(code)
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_cidef drain_queue(queue, code):
117db96d56Sopenharmony_ci    if code != queue.get():
127db96d56Sopenharmony_ci        sys.exit(1)
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_cidef test_func():
167db96d56Sopenharmony_ci    code = random.randrange(0, 1000)
177db96d56Sopenharmony_ci    queue = multiprocessing.Queue()
187db96d56Sopenharmony_ci    fill_pool = multiprocessing.Process(
197db96d56Sopenharmony_ci        target=fill_queue,
207db96d56Sopenharmony_ci        args=(queue, code)
217db96d56Sopenharmony_ci    )
227db96d56Sopenharmony_ci    drain_pool = multiprocessing.Process(
237db96d56Sopenharmony_ci        target=drain_queue,
247db96d56Sopenharmony_ci        args=(queue, code)
257db96d56Sopenharmony_ci    )
267db96d56Sopenharmony_ci    drain_pool.start()
277db96d56Sopenharmony_ci    fill_pool.start()
287db96d56Sopenharmony_ci    fill_pool.join()
297db96d56Sopenharmony_ci    drain_pool.join()
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_cidef main():
337db96d56Sopenharmony_ci    test_pool = multiprocessing.Process(target=test_func)
347db96d56Sopenharmony_ci    test_pool.start()
357db96d56Sopenharmony_ci    test_pool.join()
367db96d56Sopenharmony_ci    sys.exit(test_pool.exitcode)
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci
397db96d56Sopenharmony_ciif __name__ == "__main__":
407db96d56Sopenharmony_ci    main()
41