bool future_wait (future_t *future) { int64_t deadline = bson_get_monotonic_time () + get_future_timeout_ms (); bool resolved; mongoc_mutex_lock (&future->mutex); while (!future->resolved && bson_get_monotonic_time () <= deadline) { mongoc_cond_timedwait (&future->cond, &future->mutex, get_future_timeout_ms ()); } resolved = future->resolved; mongoc_mutex_unlock (&future->mutex); if (resolved) { future->awaited = true; /* free memory */ mongoc_thread_join (future->thread); } return resolved; }
mock_server_t * mock_server_new () { mock_server_t *server = (mock_server_t *)bson_malloc0 (sizeof (mock_server_t)); server->request_timeout_msec = get_future_timeout_ms (); _mongoc_array_init (&server->autoresponders, sizeof (autoresponder_handle_t)); _mongoc_array_init (&server->worker_threads, sizeof (mongoc_thread_t)); mongoc_cond_init (&server->cond); mongoc_mutex_init (&server->mutex); server->q = q_new (); server->start_time = bson_get_monotonic_time (); return server; }
mock_server_t * mock_server_new () { mock_server_t *server = (mock_server_t *)bson_malloc0 (sizeof (mock_server_t)); server->request_timeout_msec = get_future_timeout_ms (); _mongoc_array_init (&server->autoresponders, sizeof (autoresponder_handle_t)); _mongoc_array_init (&server->worker_threads, sizeof (mongoc_thread_t)); mongoc_cond_init (&server->cond); mongoc_mutex_init (&server->mutex); server->q = q_new (); server->start_time = bson_get_monotonic_time (); if (test_framework_getenv_bool ("MONGOC_TEST_SERVER_VERBOSE")) { server->verbose = true; } return server; }
static void TestSuite_PrintJsonHeader (TestSuite *suite, /* IN */ FILE *stream) /* IN */ { char *hostname = test_framework_get_host (); char *udspath = test_framework_get_unix_domain_socket_path_escaped (); int port = test_framework_get_port (); bool ssl = test_framework_get_ssl (); ASSERT (suite); fprintf (stream, "{\n"); TestSuite_PrintJsonSystemHeader (stream); fprintf (stream, " \"auth\": { \"user\": \"%s\", \"pass\": \"%s\" }, \n" " \"addr\": { \"host\": \"%s\", \"port\": %d }, \n" " \"gssapi\": { \"host\": \"%s\", \"user\": \"%s\" }, \n" " \"uds\": \"%s\", \n" " \"SSL\": {\n" " \"enabled\": %s,\n" " \"weak_cert_validation\": %s,\n" " \"pem_file\": \"%s\",\n" " \"pem_pwd\": \"%s\",\n" " \"ca_file\": \"%s\",\n" " \"ca_dir\": \"%s\",\n" " \"crl_file\": \"%s\"\n" " },\n" " \"framework\": {\n" " \"verbose\": { \"monitoring\": %s, \"server\": %s },\n" " \"futureTimeoutMS\": %"PRIu64",\n" " \"majorityReadConcern\": %s,\n" " \"IPv6\": %s\n" " },\n" " \"options\": {\n" " \"fork\": %s,\n" " \"tracing\": %s\n" " },\n" " \"results\": [\n", egetenv ("MONGOC_TEST_USER"), egetenv ("MONGOC_TEST_PASSWORD"), hostname, port, egetenv ("MONGOC_TEST_GSSAPI_HOST"), egetenv ("MONGOC_TEST_GSSAPI_USER"), udspath, ssl ? "true" : "false", test_framework_getenv_bool ("MONGOC_TEST_SSL_WEAK_CERT_VALIDATION") ? "true": "false", egetenv ("MONGOC_TEST_SSL_PEM_FILE"), egetenv ("MONGOC_TEST_SSL_PEM_PWD"), egetenv ("MONGOC_TEST_SSL_CA_FILE"), egetenv ("MONGOC_TEST_SSL_CA_DIR"), egetenv ("MONGOC_TEST_SSL_CRL_FILE"), getenv ("MONGOC_TEST_MONITORING_VERBOSE") ? "true" : "false", getenv ("MONGOC_TEST_SERVER_VERBOSE") ? "true" : "false", get_future_timeout_ms (), test_framework_getenv_bool ("MONGOC_ENABLE_MAJORITY_READ_CONCERN") ? "true" : "false", test_framework_getenv_bool ("MONGOC_CHECK_IPV6") ? "true" : "false", (suite->flags & TEST_NOFORK) ? "false" : "true", (suite->flags & TEST_TRACE) ? "true" : "false" ); bson_free (hostname); bson_free (udspath); fflush (stream); }
bool future_wait (future_t *future) { return future_wait_max (future, get_future_timeout_ms ()); }