Lines Matching +full:wakeup +full:- +full:latency
2 * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved.
41 * bandwidth and latency. Sending a packet into the network causes it to consume
91 return ossl_time_compare(a->next_time, b->next_time); in net_pkt_cmp()
99 uint64_t latency; /* ms */ member
109 uint64_t capacity, uint64_t latency) in net_sim_init() argument
111 s->ccm = ccm; in net_sim_init()
112 s->cc = cc; in net_sim_init()
114 s->capacity = capacity; in net_sim_init()
115 s->latency = latency; in net_sim_init()
117 s->spare_capacity = capacity; in net_sim_init()
119 s->total_acked = 0; in net_sim_init()
120 s->total_lost = 0; in net_sim_init()
122 if (!TEST_ptr(s->pkts = ossl_pqueue_NET_PKT_new(net_pkt_cmp))) in net_sim_init()
135 ossl_pqueue_NET_PKT_pop_free(s->pkts, do_free); in net_sim_cleanup()
156 success = (sz <= s->spare_capacity); in net_sim_send()
158 pkt->tx_time = fake_time; in net_sim_send()
159 pkt->success = success; in net_sim_send()
161 /* This packet will arrive successfully after |latency| time. */ in net_sim_send()
162 pkt->arrive_time = ossl_time_add(pkt->tx_time, in net_sim_send()
163 ossl_ms2time(s->latency)); in net_sim_send()
165 pkt->determination_time = ossl_time_add(pkt->arrive_time, in net_sim_send()
166 ossl_ms2time(s->latency)); in net_sim_send()
167 pkt->next_time = pkt->arrive_time; in net_sim_send()
168 s->spare_capacity -= sz; in net_sim_send()
173 * |latency|. in net_sim_send()
175 pkt->arrive_time = ossl_time_add(pkt->tx_time, in net_sim_send()
176 ossl_ms2time(s->latency)); in net_sim_send()
180 pkt->determination_time = ossl_time_add(pkt->tx_time, in net_sim_send()
181 ossl_ms2time(3 * s->latency)); in net_sim_send()
182 pkt->next_time = pkt->determination_time; in net_sim_send()
185 pkt->size = sz; in net_sim_send()
187 if (!TEST_true(s->ccm->on_data_sent(s->cc, sz))) in net_sim_send()
190 if (!TEST_true(ossl_pqueue_NET_PKT_push(s->pkts, pkt, &pkt->idx))) in net_sim_send()
202 NET_PKT *pkt = ossl_pqueue_NET_PKT_peek(s->pkts); in net_sim_process_one()
208 if (skip_forward && ossl_time_compare(pkt->next_time, fake_time) > 0) in net_sim_process_one()
209 fake_time = pkt->next_time; in net_sim_process_one()
211 if (pkt->success && !pkt->arrived in net_sim_process_one()
212 && ossl_time_compare(fake_time, pkt->arrive_time) >= 0) { in net_sim_process_one()
214 s->spare_capacity += pkt->size; in net_sim_process_one()
215 pkt->arrived = 1; in net_sim_process_one()
217 ossl_pqueue_NET_PKT_pop(s->pkts); in net_sim_process_one()
218 pkt->next_time = pkt->determination_time; in net_sim_process_one()
219 if (!ossl_pqueue_NET_PKT_push(s->pkts, pkt, &pkt->idx)) in net_sim_process_one()
225 if (ossl_time_compare(fake_time, pkt->determination_time) < 0) in net_sim_process_one()
228 if (!TEST_true(!pkt->success || pkt->arrived)) in net_sim_process_one()
231 if (!pkt->success) { in net_sim_process_one()
234 loss_info.tx_time = pkt->tx_time; in net_sim_process_one()
235 loss_info.tx_size = pkt->size; in net_sim_process_one()
237 if (!TEST_true(s->ccm->on_data_lost(s->cc, &loss_info))) in net_sim_process_one()
240 if (!TEST_true(s->ccm->on_data_lost_finished(s->cc, 0))) in net_sim_process_one()
243 s->total_lost += pkt->size; in net_sim_process_one()
244 ossl_pqueue_NET_PKT_pop(s->pkts); in net_sim_process_one()
249 ack_info.tx_time = pkt->tx_time; in net_sim_process_one()
250 ack_info.tx_size = pkt->size; in net_sim_process_one()
252 if (!TEST_true(s->ccm->on_data_acked(s->cc, &ack_info))) in net_sim_process_one()
255 s->total_acked += pkt->size; in net_sim_process_one()
256 ossl_pqueue_NET_PKT_pop(s->pkts); in net_sim_process_one()
269 --skip_forward; in net_sim_process()
293 if (!TEST_true(ccm->get_option_uint(cc, OSSL_CC_OPTION_CUR_CWND_SIZE, in dump_state()
297 if (!TEST_true(ccm->get_option_uint(cc, OSSL_CC_OPTION_CUR_BYTES_IN_FLIGHT, in dump_state()
301 if (!TEST_true(ccm->get_option_uint(cc, OSSL_CC_OPTION_CUR_STATE, in dump_state()
307 ccm->get_tx_allowance(cc), in dump_state()
310 s->total_acked, in dump_state()
311 s->total_lost, in dump_state()
312 s->capacity, in dump_state()
313 s->spare_capacity, in dump_state()
324 * Simulator-based unit test in which we simulate a network with a certain
337 uint64_t actual_capacity = 16000; /* B/s - 128kb/s */ in test_simulate()
346 if (!TEST_ptr(cc = ccm->new(fake_now, NULL))) in test_simulate()
358 if (!TEST_true(ccm->set_input_params(cc, params))) in test_simulate()
368 if (!TEST_true(ccm->bind_diagnostics(cc, params))) in test_simulate()
371 ccm->reset(cc); in test_simulate()
373 if (!TEST_uint64_t_ge(allowance = ccm->get_tx_allowance(cc), mdpl)) in test_simulate()
392 allowance = ccm->get_tx_allowance(cc); in test_simulate()
425 if (!TEST_uint64_t_ge(ccm->get_tx_allowance(cc), mdpl)) in test_simulate()
449 double error = ((double)estimated_capacity / (double)actual_capacity) - 1.0; in test_simulate()
467 ccm->free(cc); in test_simulate()
497 if (!TEST_ptr(cc = ccm->new(fake_now, NULL))) in test_sanity()
505 if (!TEST_true(ccm->set_input_params(cc, params))) in test_sanity()
508 ccm->reset(cc); in test_sanity()
517 if (!TEST_true(ccm->bind_diagnostics(cc, params)) in test_sanity()
521 if (!TEST_uint64_t_ge(allowance = ccm->get_tx_allowance(cc), 1472)) in test_sanity()
524 /* There is TX allowance so wakeup should be immediate */ in test_sanity()
525 if (!TEST_true(ossl_time_is_zero(ccm->get_wakeup_deadline(cc)))) in test_sanity()
533 if (!TEST_true(ccm->on_data_sent(cc, 1200))) in test_sanity()
537 if (!TEST_uint64_t_eq(ccm->get_tx_allowance(cc), allowance - 1200)) in test_sanity()
544 if (!TEST_true(ccm->on_data_acked(cc, &ack_info))) in test_sanity()
548 if (!TEST_uint64_t_ge(allowance2 = ccm->get_tx_allowance(cc), allowance)) in test_sanity()
552 if (!TEST_true(ccm->on_data_sent(cc, 1200))) in test_sanity()
556 if (!TEST_uint64_t_eq(ccm->get_tx_allowance(cc), allowance - 1200)) in test_sanity()
559 if (!TEST_true(ccm->on_data_invalidated(cc, 1200))) in test_sanity()
563 if (!TEST_uint64_t_eq(ccm->get_tx_allowance(cc), allowance2)) in test_sanity()
567 if (!TEST_uint64_t_ge(allowance = ccm->get_tx_allowance(cc), 1200 + 1300)) in test_sanity()
570 if (!TEST_true(ccm->on_data_sent(cc, 1200))) in test_sanity()
573 if (!TEST_true(ccm->on_data_sent(cc, 1300))) in test_sanity()
576 if (!TEST_uint64_t_eq(allowance2 = ccm->get_tx_allowance(cc), in test_sanity()
577 allowance - 1200 - 1300)) in test_sanity()
584 if (!TEST_true(ccm->on_data_lost(cc, &loss_info))) in test_sanity()
588 if (!TEST_true(ccm->on_data_lost(cc, &loss_info))) in test_sanity()
591 if (!TEST_true(ccm->on_data_lost_finished(cc, 0))) in test_sanity()
595 if (!TEST_uint64_t_ne(ccm->get_tx_allowance(cc), allowance2)) in test_sanity()
599 if (!TEST_uint64_t_lt(ccm->get_tx_allowance(cc), allowance)) in test_sanity()
606 ccm->free(cc); in test_sanity()