blob: f98193218dd546687b979f6f0b3f304d4f36ac36 [file] [log] [blame]
/** @file
A brief file description
@section license License
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/****************************************************************************
P_NetVCTest.h
Description:
Unit test for infrastructure for VConnections implementing the
NetVConnection interface
****************************************************************************/
#pragma once
#include "tscore/ink_platform.h"
#include "tscore/Regression.h"
class VIO;
class MIOBuffer;
class IOBufferReader;
enum NetVcTestType_t {
NET_VC_TEST_ACTIVE,
NET_VC_TEST_PASSIVE,
};
struct NVC_test_def {
const char *test_name;
int bytes_to_send;
int nbytes_write;
int bytes_to_read;
int nbytes_read;
int write_bytes_per;
int timeout;
int expected_read_term;
int expected_write_term;
};
extern NVC_test_def netvc_tests_def[];
extern const unsigned num_netvc_tests;
class NetTestDriver : public Continuation
{
public:
NetTestDriver();
~NetTestDriver() override;
int errors = 0;
protected:
RegressionTest *r = nullptr;
int *pstatus = nullptr;
};
class NetVCTest : public Continuation
{
public:
NetVCTest();
~NetVCTest() override;
NetVcTestType_t test_cont_type = NET_VC_TEST_ACTIVE;
int main_handler(int event, void *data);
void read_handler(int event);
void write_handler(int event);
void cleanup();
void init_test(NetVcTestType_t n_type, NetTestDriver *driver, NetVConnection *nvc, RegressionTest *robj, NVC_test_def *my_def,
const char *module_name_arg, const char *debug_tag_arg);
void start_test();
int fill_buffer(MIOBuffer *buf, uint8_t *seed, int bytes);
int consume_and_check_bytes(IOBufferReader *r, uint8_t *seed);
void write_finished();
void read_finished();
void finished();
void record_error(const char *msg);
NetVConnection *test_vc = nullptr;
RegressionTest *regress = nullptr;
NetTestDriver *driver = nullptr;
VIO *read_vio = nullptr;
VIO *write_vio = nullptr;
MIOBuffer *read_buffer = nullptr;
MIOBuffer *write_buffer = nullptr;
IOBufferReader *reader_for_rbuf = nullptr;
IOBufferReader *reader_for_wbuf = nullptr;
int write_bytes_to_add_per = 0;
int timeout = 0;
int actual_bytes_read = 0;
int actual_bytes_sent = 0;
bool write_done = false;
bool read_done = false;
uint8_t read_seed = 0;
uint8_t write_seed = 0;
int bytes_to_send = 0;
int bytes_to_read = 0;
int nbytes_read = 0;
int nbytes_write = 0;
int expected_read_term = 0;
int expected_write_term = 0;
const char *test_name = nullptr;
const char *module_name = nullptr;
const char *debug_tag = nullptr;
};