blob: e0f1d79e835a284564b4217ef409188750beab35 [file] [log] [blame]
murgatroid99c36f6ea2016-10-03 09:24:09 -07001/*
2 *
3 * Copyright 2016, Google Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following disclaimer
14 * in the documentation and/or other materials provided with the
15 * distribution.
16 * * Neither the name of Google Inc. nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 */
33
34/* This check is for testing only. */
35#ifndef GRPC_UV
36
37#include "test/core/end2end/cq_verifier_internal.h"
38
39/* the verifier itself */
40struct cq_verifier {
41 /* bound completion queue */
42 grpc_completion_queue *cq;
43 /* start of expectation list */
44 expectation *first_expectation;
45 uv_timer_t timer;
46};
47
48cq_verifier *cq_verifier_create(grpc_completion_queue *cq) {
49 cq_verifier *v = gpr_malloc(sizeof(cq_verifier));
50 v->cq = cq;
murgatroid99aa9c5782016-10-10 12:16:13 -070051 cq_verifier_set_first_expectation(v, NULL);
murgatroid99c36f6ea2016-10-03 09:24:09 -070052 return v;
53}
54
55void cq_verifier_destroy(cq_verifier *v) {
56 cq_verify(v);
57 gpr_free(v);
58}
59
60expectation *cq_verifier_get_first_expectation(cq_verifier *v) {
61 return v->first_expectation;
62}
63
64void cq_verifier_set_first_expectation(cq_verifier *v, expectation *e) {
65 v->first_expectation = e;
66}
67
68grpc_event cq_verifier_next_event(cq_verifier *v, int timeout_seconds) {
murgatroid99aa9c5782016-10-10 12:16:13 -070069 const gpr_timespec deadline =
Robbie Shadeca7effc2017-01-17 09:14:29 -050070 grpc_timeout_seconds_to_deadline(timeout_seconds);
murgatroid99c36f6ea2016-10-03 09:24:09 -070071 return grpc_completion_queue_next(v->cq, deadline, NULL);
72}
73
74#endif /* GRPC_UV */