From 6e33c92cf00fe1fb8419ccd802c39390b318ca40 Mon Sep 17 00:00:00 2001 From: Robin Sommer Date: Thu, 4 Sep 2014 20:30:28 -0700 Subject: [PATCH] Adding test for dynamic packet dumper plugin. --- .../btest/Baseline/plugins.pktdumper/output | 12 ++++++ .../plugins/pktdumper-plugin/.btest-ignore | 0 .../plugins/pktdumper-plugin/CMakeLists.txt | 17 ++++++++ .../btest/plugins/pktdumper-plugin/src/Foo.cc | 40 +++++++++++++++++++ .../btest/plugins/pktdumper-plugin/src/Foo.h | 30 ++++++++++++++ .../plugins/pktdumper-plugin/src/Plugin.cc | 20 ++++++++++ testing/btest/plugins/pktdumper.bro | 8 ++++ 7 files changed, 127 insertions(+) create mode 100644 testing/btest/Baseline/plugins.pktdumper/output create mode 100644 testing/btest/plugins/pktdumper-plugin/.btest-ignore create mode 100644 testing/btest/plugins/pktdumper-plugin/CMakeLists.txt create mode 100644 testing/btest/plugins/pktdumper-plugin/src/Foo.cc create mode 100644 testing/btest/plugins/pktdumper-plugin/src/Foo.h create mode 100644 testing/btest/plugins/pktdumper-plugin/src/Plugin.cc create mode 100644 testing/btest/plugins/pktdumper.bro diff --git a/testing/btest/Baseline/plugins.pktdumper/output b/testing/btest/Baseline/plugins.pktdumper/output new file mode 100644 index 0000000000..05ffec25cb --- /dev/null +++ b/testing/btest/Baseline/plugins.pktdumper/output @@ -0,0 +1,12 @@ +Demo::Foo - A Foo packet dumper (dynamic, version 1.0) + [Packet Dumper] FooPktDumper (dumper prefix: foo) + +=== +Dumping to XXX: 1373858797.646968 len 94 +Dumping to XXX: 1373858797.646998 len 94 +Dumping to XXX: 1373858797.647041 len 86 +Dumping to XXX: 1373858797.647147 len 98 +Dumping to XXX: 1373858797.647186 len 86 +Dumping to XXX: 1373858797.647250 len 86 +Dumping to XXX: 1373858797.647317 len 86 +Dumping to XXX: 1373858797.647350 len 86 diff --git a/testing/btest/plugins/pktdumper-plugin/.btest-ignore b/testing/btest/plugins/pktdumper-plugin/.btest-ignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/btest/plugins/pktdumper-plugin/CMakeLists.txt b/testing/btest/plugins/pktdumper-plugin/CMakeLists.txt new file mode 100644 index 0000000000..2234907ad2 --- /dev/null +++ b/testing/btest/plugins/pktdumper-plugin/CMakeLists.txt @@ -0,0 +1,17 @@ + +project(Bro-Plugin-Demo-Foo) + +cmake_minimum_required(VERSION 2.6.3) + +if ( NOT BRO_DIST ) + message(FATAL_ERROR "BRO_DIST not set") +endif () + +set(CMAKE_MODULE_PATH ${BRO_DIST}/cmake) + +include(BroPlugin) + +bro_plugin_begin(Demo Foo) +bro_plugin_cc(src/Plugin.cc) +bro_plugin_cc(src/Foo.cc) +bro_plugin_end() diff --git a/testing/btest/plugins/pktdumper-plugin/src/Foo.cc b/testing/btest/plugins/pktdumper-plugin/src/Foo.cc new file mode 100644 index 0000000000..fdd364b034 --- /dev/null +++ b/testing/btest/plugins/pktdumper-plugin/src/Foo.cc @@ -0,0 +1,40 @@ + +#include +#include + +#include "Foo.h" + +using namespace plugin::Demo_Foo; + +Foo::Foo(const std::string& path, bool is_live) + { + props.path = path; + } + +Foo::~Foo() + { + } + +void Foo::Open() + { + props.open_time = network_time; + props.hdr_size = 0; + Opened(props); + } + +void Foo::Close() + { + Closed(); + } + +bool Foo::Dump(const Packet* pkt) + { + double t = double(pkt->hdr->ts.tv_sec) + double(pkt->hdr->ts.tv_usec) / 1e6; + fprintf(stdout, "Dumping to %s: %.6f len %u\n", props.path.c_str(), t, (unsigned int)pkt->hdr->len); + return true; + } + +iosource::PktDumper* Foo::Instantiate(const std::string& path, bool append) + { + return new Foo(path, append); + } diff --git a/testing/btest/plugins/pktdumper-plugin/src/Foo.h b/testing/btest/plugins/pktdumper-plugin/src/Foo.h new file mode 100644 index 0000000000..b8c8291728 --- /dev/null +++ b/testing/btest/plugins/pktdumper-plugin/src/Foo.h @@ -0,0 +1,30 @@ + +#ifndef BRO_PLUGIN_DEMO_FOO_H +#define BRO_PLUGIN_DEMO_FOO_H + +#include +#include + +namespace plugin { +namespace Demo_Foo { + +class Foo : public iosource::PktDumper { +public: + Foo(const std::string& path, bool is_live); + virtual ~Foo(); + + static PktDumper* Instantiate(const std::string& path, bool append); + +protected: + virtual void Open(); + virtual void Close(); + virtual bool Dump(const Packet* pkt); + +private: + Properties props; +}; + +} +} + +#endif diff --git a/testing/btest/plugins/pktdumper-plugin/src/Plugin.cc b/testing/btest/plugins/pktdumper-plugin/src/Plugin.cc new file mode 100644 index 0000000000..81ef8c79f4 --- /dev/null +++ b/testing/btest/plugins/pktdumper-plugin/src/Plugin.cc @@ -0,0 +1,20 @@ + +#include "Plugin.h" + +#include "Foo.h" + +namespace plugin { namespace Demo_Foo { Plugin plugin; } } + +using namespace plugin::Demo_Foo; + +plugin::Configuration Plugin::Configure() + { + AddComponent(new ::iosource::PktDumperComponent("FooPktDumper", "foo", ::plugin::Demo_Foo::Foo::Instantiate)); + + plugin::Configuration config; + config.name = "Demo::Foo"; + config.description = "A Foo packet dumper"; + config.version.major = 1; + config.version.minor = 0; + return config; + } diff --git a/testing/btest/plugins/pktdumper.bro b/testing/btest/plugins/pktdumper.bro new file mode 100644 index 0000000000..61540897d8 --- /dev/null +++ b/testing/btest/plugins/pktdumper.bro @@ -0,0 +1,8 @@ +# @TEST-EXEC: ${DIST}/aux/bro-aux/plugin-support/init-plugin Demo Foo +# @TEST-EXEC: cp -r %DIR/pktdumper-plugin/* . +# @TEST-EXEC: ./configure --bro-dist=${DIST} && make +# @TEST-EXEC: BRO_PLUGIN_PATH=`pwd` bro -NN Demo::Foo >>output +# @TEST-EXEC: echo === >>output +# @TEST-EXEC: BRO_PLUGIN_PATH=`pwd` bro -r $TRACES/port4242.trace -w foo:XXX %INPUT FilteredTraceDetection::enable=F >>output +# @TEST-EXEC: btest-diff output +