@@ -41,6 +41,7 @@ struct _mock_server_t
41
41
bool stopped ;
42
42
bool verbose ;
43
43
bool rand_delay ;
44
+ int64_t request_timeout_msec ;
44
45
uint16_t port ;
45
46
mongoc_socket_t * sock ;
46
47
char * uri_str ;
@@ -108,6 +109,7 @@ mock_server_new ()
108
109
{
109
110
mock_server_t * server = bson_malloc0 (sizeof (mock_server_t ));
110
111
112
+ server -> request_timeout_msec = 10 * 1000 ;
111
113
_mongoc_array_init (& server -> autoresponders ,
112
114
sizeof (autoresponder_handle_t ));
113
115
_mongoc_array_init (& server -> worker_threads ,
@@ -536,6 +538,48 @@ mock_server_set_verbose (mock_server_t *server, bool verbose)
536
538
}
537
539
538
540
541
+ /*--------------------------------------------------------------------------
542
+ *
543
+ * mock_server_get_request_timeout_msec --
544
+ *
545
+ * How long mock_server_receives_* functions wait for a client
546
+ * request before giving up and returning NULL.
547
+ *
548
+ *--------------------------------------------------------------------------
549
+ */
550
+
551
+ int64_t
552
+ mock_server_get_request_timeout_msec (mock_server_t * server )
553
+ {
554
+ int64_t request_timeout_msec ;
555
+
556
+ mongoc_mutex_lock (& server -> mutex );
557
+ request_timeout_msec = server -> request_timeout_msec ;
558
+ mongoc_mutex_unlock (& server -> mutex );
559
+
560
+ return request_timeout_msec ;
561
+ }
562
+
563
+ /*--------------------------------------------------------------------------
564
+ *
565
+ * mock_server_set_request_timeout_msec --
566
+ *
567
+ * How long mock_server_receives_* functions wait for a client
568
+ * request before giving up and returning NULL.
569
+ *
570
+ *--------------------------------------------------------------------------
571
+ */
572
+
573
+ void
574
+ mock_server_set_request_timeout_msec (mock_server_t * server ,
575
+ int64_t request_timeout_msec )
576
+ {
577
+ mongoc_mutex_lock (& server -> mutex );
578
+ server -> request_timeout_msec = request_timeout_msec ;
579
+ mongoc_mutex_unlock (& server -> mutex );
580
+ }
581
+
582
+
539
583
/*--------------------------------------------------------------------------
540
584
*
541
585
* mock_server_get_rand_delay --
@@ -626,17 +670,16 @@ mock_server_receives_command (mock_server_t *server,
626
670
ns = bson_strdup_printf ("%s.$cmd" , database_name );
627
671
628
672
q = mock_server_get_queue (server );
629
- /* TODO: get timeout val from mock_server_t */
630
- request = (request_t * ) q_get (q , 10 * 1000 );
631
-
632
- if (!request_matches_query (request ,
633
- ns ,
634
- flags ,
635
- 0 ,
636
- 1 ,
637
- formatted_command_json ,
638
- NULL ,
639
- true)) {
673
+ request = (request_t * ) q_get (q , server -> request_timeout_msec );
674
+
675
+ if (request && !request_matches_query (request ,
676
+ ns ,
677
+ flags ,
678
+ 0 ,
679
+ 1 ,
680
+ formatted_command_json ,
681
+ NULL ,
682
+ true)) {
640
683
request_destroy (request );
641
684
request = NULL ;
642
685
}
@@ -730,17 +773,16 @@ mock_server_receives_query (mock_server_t *server,
730
773
request_t * request ;
731
774
732
775
q = mock_server_get_queue (server );
733
- /* TODO: get timeout val from mock_server_t */
734
- request = (request_t * ) q_get (q , 10 * 1000 );
735
-
736
- if (!request_matches_query (request ,
737
- ns ,
738
- flags ,
739
- skip ,
740
- n_return ,
741
- query_json ,
742
- fields_json ,
743
- false)) {
776
+ request = (request_t * ) q_get (q , server -> request_timeout_msec );
777
+
778
+ if (request && !request_matches_query (request ,
779
+ ns ,
780
+ flags ,
781
+ skip ,
782
+ n_return ,
783
+ query_json ,
784
+ fields_json ,
785
+ false)) {
744
786
request_destroy (request );
745
787
return NULL ;
746
788
}
@@ -777,13 +819,12 @@ mock_server_receives_insert (mock_server_t *server,
777
819
request_t * request ;
778
820
779
821
q = mock_server_get_queue (server );
780
- /* TODO: get timeout val from mock_server_t */
781
- request = (request_t * ) q_get (q , 10 * 1000 );
822
+ request = (request_t * ) q_get (q , server -> request_timeout_msec );
782
823
783
- if (!request_matches_insert (request ,
784
- ns ,
785
- flags ,
786
- doc_json )) {
824
+ if (request && !request_matches_insert (request ,
825
+ ns ,
826
+ flags ,
827
+ doc_json )) {
787
828
request_destroy (request );
788
829
return NULL ;
789
830
}
@@ -819,13 +860,12 @@ mock_server_receives_bulk_insert (mock_server_t *server,
819
860
request_t * request ;
820
861
821
862
q = mock_server_get_queue (server );
822
- /* TODO: get timeout val from mock_server_t */
823
- request = (request_t * ) q_get (q , 10 * 1000 );
863
+ request = (request_t * ) q_get (q , server -> request_timeout_msec );
824
864
825
- if (!request_matches_bulk_insert (request ,
826
- ns ,
827
- flags ,
828
- n )) {
865
+ if (request && !request_matches_bulk_insert (request ,
866
+ ns ,
867
+ flags ,
868
+ n )) {
829
869
request_destroy (request );
830
870
return NULL ;
831
871
}
@@ -863,10 +903,9 @@ request_t *mock_server_receives_kill_cursors (mock_server_t *server,
863
903
864
904
q = mock_server_get_queue (server );
865
905
866
- /* TODO: get timeout val from mock_server_t */
867
- request = (request_t * ) q_get (q , 10 * 1000 );
906
+ request = (request_t * ) q_get (q , server -> request_timeout_msec );
868
907
869
- if (!request_matches_kill_cursors (request , cursor_id )) {
908
+ if (request && !request_matches_kill_cursors (request , cursor_id )) {
870
909
request_destroy (request );
871
910
return NULL ;
872
911
}
0 commit comments