source: test/test-time.c @ 5692bc4

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 5692bc4 was 5692bc4, checked in by Shane Alcock <salcock@…>, 7 years ago

Made timestamp integrity testing more thorough

We now test timestamp conversion across multiple formats.

Fixed timestamp difference check so that it would not allow
large negative values to count as successes.

  • Property mode set to 100644
File size: 3.7 KB
Line 
1/*
2 * This file is part of libtrace
3 *
4 * Copyright (c) 2007 The University of Waikato, Hamilton, New Zealand.
5 * Authors: Daniel Lawson
6 *          Perry Lorier
7 *         
8 * All rights reserved.
9 *
10 * This code has been developed by the University of Waikato WAND
11 * research group. For further information please see http://www.wand.net.nz/
12 *
13 * libtrace is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
17 *
18 * libtrace is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with libtrace; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26 *
27 * $Id$
28 *
29 */
30
31
32#include <stdio.h>
33#include <stdlib.h>
34#include <assert.h>
35#include <string.h>
36#include <sys/time.h>
37#include <sys/types.h>
38#include <time.h>
39
40#include <netinet/in.h>
41#include <netinet/in_systm.h>
42#include <netinet/tcp.h>
43#include <netinet/ip.h>
44#include <netinet/ip_icmp.h>
45#include <arpa/inet.h>
46#include <sys/socket.h>
47#include <string.h>
48#include "dagformat.h"
49#include "libtrace.h"
50
51struct libtrace_t *trace;
52
53const char *lookup_uri(const char *type) {
54        if (strchr(type,':'))
55                return type;
56        if (!strcmp(type,"erf"))
57                return "erf:traces/100_packets.erf";
58        if (!strcmp(type,"rawerf"))
59                return "rawerf:traces/100_packets.erf";
60        if (!strcmp(type,"pcap"))
61                return "pcap:traces/100_packets.pcap";
62        if (!strcmp(type,"wtf"))
63                return "wtf:traces/wed.wtf";
64        if (!strcmp(type,"rtclient"))
65                return "rtclient:chasm";
66        if (!strcmp(type,"pcapfile"))
67                return "pcapfile:traces/100_packets.pcap";
68        if (!strcmp(type,"pcapfilens"))
69                return "pcapfile:traces/100_packetsns.pcap";
70        if (!strcmp(type, "duck"))
71                return "duck:traces/100_packets.duck";
72        if (!strcmp(type, "legacyatm"))
73                return "legacyatm:traces/legacyatm.gz";
74        if (!strcmp(type, "legacypos"))
75                return "legacypos:traces/legacypos.gz";
76        if (!strcmp(type, "legacyeth"))
77                return "legacyeth:traces/legacyeth.gz";
78        if (!strcmp(type, "tsh"))
79                return "tsh:traces/10_packets.tsh.gz";
80        return type;
81}
82
83void iferr(libtrace_t *trace)
84{
85        libtrace_err_t err = trace_get_err(trace);
86        if (err.err_num==0)
87                return;
88        printf("Error: %s\n",err.problem);
89        exit(1);
90}
91
92int main(int argc, char *argv[]) {
93        char *uri = lookup_uri(argv[1]);
94        int psize = 0;
95        int error = 0;
96        int count = 0;
97        libtrace_packet_t *packet;
98
99        trace = trace_create(uri);
100        iferr(trace);
101
102        trace_start(trace);
103        iferr(trace);
104       
105        packet=trace_create_packet();
106        for (;;) {
107                double ts;
108                double tsdiff;
109                struct timeval tv;
110                if ((psize = trace_read_packet(trace, packet)) <0) {
111                        error = 1;
112                        break;
113                }
114                if (psize == 0) {
115                        error = 0;
116                        break;
117                }
118                count ++;
119                tv=trace_get_timeval(packet);
120                ts=trace_get_seconds(packet);
121                tsdiff = (tv.tv_sec+tv.tv_usec/1000000.0)-ts;
122                assert(tsdiff > -0.000001 && tsdiff < 0.000001);
123
124        }
125        trace_destroy_packet(packet);
126        if (error == 0) {
127                if (count == 100) {
128                        printf("success: 100 packets read\n");
129                } else {
130                        printf("failure: 100 packets expected, %d seen\n",count);
131                        error = 1;
132                }
133        } else {
134                iferr(trace);
135        }
136        trace_destroy(trace);
137        return error;
138}
Note: See TracBrowser for help on using the repository browser.