📄 nc_test_framework.h
字号:
//==========================================================================//// tests/nc_test_framework.h//// Network characterization tests framework////==========================================================================//####ECOSGPLCOPYRIGHTBEGIN####// -------------------------------------------// This file is part of eCos, the Embedded Configurable Operating System.// Portions created by Nick Garnett are// Copyright (C) 2003 eCosCentric Ltd.//// eCos is free software; you can redistribute it and/or modify it under// the terms of the GNU General Public License as published by the Free// Software Foundation; either version 2 or (at your option) any later version.//// eCos is distributed in the hope that it will be useful, but WITHOUT ANY// WARRANTY; without even the implied warranty of MERCHANTABILITY or// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License// for more details.//// You should have received a copy of the GNU General Public License along// with eCos; if not, write to the Free Software Foundation, Inc.,// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.//// As a special exception, if other files instantiate templates or use macros// or inline functions from this file, or you compile this file and link it// with other works to produce a work based on this file, this file does not// by itself cause the resulting work to be covered by the GNU General Public// License. However the source code for this file must still be made available// in accordance with section (3) of the GNU General Public License.//// This exception does not invalidate any other reasons why a work based on// this file might be covered by the GNU General Public License.//// -------------------------------------------//####ECOSGPLCOPYRIGHTEND####//####BSDCOPYRIGHTBEGIN####//// -------------------------------------------//// Portions of this software may have been derived from OpenBSD, // FreeBSD or other sources, and are covered by the appropriate// copyright disclaimers included herein.//// -------------------------------------------////####BSDCOPYRIGHTEND####//==========================================================================//#####DESCRIPTIONBEGIN####//// Author(s): gthomas// Contributors: gthomas// Date: 2000-01-10// Purpose: // Description: // ////####DESCRIPTIONEND####////==========================================================================#ifndef _TESTS_NC_TEST_FRAMEWORK_H_#define _TESTS_NC_TEST_FRAMEWORK_H_#ifdef __ECOS#include <network.h>#else#undef _KERNEL#include <sys/param.h>#include <sys/socket.h>#include <sys/ioctl.h>#include <sys/errno.h>#include <sys/time.h>#include <net/if.h>#include <netinet/in_systm.h>#include <netinet/in.h>#include <netinet/ip.h>#include <netinet/ip_icmp.h>#include <netdb.h>#ifndef EAI_NONE#define EAI_NONE 0#endif#endif#ifdef __ECOS#define test_printf diag_printftypedef cyg_addrword_t test_param_t;#else#define test_printf printftypedef void *test_param_t;#endif#ifndef true#define false 0#define true 1#endif#define NC_SLAVE_PORT 7777#define NC_MASTER_PORT 7776#define NC_TESTING_SLAVE_PORT 8770#define NC_TESTING_MASTER_PORT 8771#define __string(s) #s#define _string(s) __string(s)//// The basic idea behind this test structure is that one end will run// in "slave" mode and the other in "master" mode. Typically, the slave// will run on a target platform with the master running on a host.//// The slave starts up by listening for a connection on the "SLAVE_PORT".// In order for the testing to require the minimum stack support, this// connection (and the protocol) will use UDP.//// The master will connect to the slave and send it a request over this// connection. Once the slave accepts the request, then master and slave// will execute the operation, typically a test. The control connection// will remain active until the master sends a 'disconnect' request. The// control connection will be broken after the reply to this request has// been sent.//#define MAX_ERRORS 5 // Give up after this many errors#define NC_REPLY_TIMEOUT 10 // The slave may be slow#define NC_TEST_TIMEOUT 3 // More generous for tests#define NC_RESULTS_TIMEOUT (MAX_ERRORS+2)*NC_TEST_TIMEOUTstruct nc_request { int type; // Description of request int seq; // Sequence number, used to build response int nbufs; // Number of "buffers" to send int buflen; // Length of each buffer int slave_port; // Network ports to use int master_port; int timeout; // Max time to wait for any packet};#define NC_REQUEST_DISCONNECT 0x0001#define NC_REQUEST_UDP_SEND 0x0010 // Slave to send UDP data#define NC_REQUEST_UDP_RECV 0x0011 // Slave to receive UDP data#define NC_REQUEST_UDP_ECHO 0x0012 // Master->slave->master#define NC_REQUEST_TCP_SEND 0x0020 // Slave to send TCP data#define NC_REQUEST_TCP_RECV 0x0021 // Slave to receive TCP data#define NC_REQUEST_TCP_ECHO 0x0022 // Master->slave->master#define NC_REQUEST_START_IDLE 0x0100 // Start some idle processing#define NC_REQUEST_STOP_IDLE 0x0101 // Stop idle processing#define NC_REQUEST_SET_LOAD 0x0200 // Set the background load levelstruct nc_reply { int response; // ACK or NAK int seq; // Must match request int reason; // If NAK, why request turned down union { // Miscellaneous data, depending on request struct { long elapsed_time; // In 10ms "ticks" long count[2]; // Result } idle_results; } misc;};#define NC_REPLY_ACK 0x0001 // Request accepted#define NC_REPLY_NAK 0x0000 // Request denied#define NC_REPLY_NAK_UNKNOWN_REQUEST 0x0001#define NC_REPLY_NAK_BAD_REQUEST 0x0002 // Slave can't handle#define NC_REPLY_NAK_NO_BACKGROUND 0x0003 // Slave can't do background/idle//// Test data 'packets' look like thisstruct nc_test_data { long key1; int seq; int len; long key2; char data[0]; // Actual data};#define NC_TEST_DATA_KEY1 0xC0DEADC0#define NC_TEST_DATA_KEY2 0xC0DEADC1struct nc_test_results { long key1; // Identify uniquely as a response record int seq; // Matches request int nsent; int nrecvd; long key2; // Additional verification};#define NC_TEST_RESULT_KEY1 0xDEADC0DE#define NC_TEST_RESULT_KEY2 0xDEADC1DE#endif // _TESTS_NC_TEST_FRAMEWORK_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -