cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt//
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews// Automated Testing Framework (atf)
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt//
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews// Copyright (c) 2007 The NetBSD Foundation, Inc.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews// All rights reserved.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews//
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// Redistribution and use in source and binary forms, with or without
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// modification, are permitted provided that the following conditions
89d13242706fe95eba1efdfcd9671fafe577e671Automatic Updater// are met:
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// 1. Redistributions of source code must retain the above copyright
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// notice, this list of conditions and the following disclaimer.
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// 2. Redistributions in binary form must reproduce the above copyright
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// notice, this list of conditions and the following disclaimer in the
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// documentation and/or other materials provided with the distribution.
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt//
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt//
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt#if !defined(TOOLS_FORMATS_HPP)
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt#define TOOLS_FORMATS_HPP
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Huntextern "C" {
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt#include <sys/time.h>
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt}
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt#include <istream>
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt#include <string>
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Huntnamespace tools {
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Huntnamespace atf_report {
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Huntstruct test_case_result {
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt enum state_enum {
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt PASSED,
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt FAILED,
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt SKIPPED,
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt };
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt const state_enum state;
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt const std::string& reason;
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt test_case_result(const state_enum p_state, const std::string& p_reason) :
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt state(p_state),
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt reason(p_reason)
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt {
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt }
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt};
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Huntclass atf_tps_reader {
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt std::istream& m_is;
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt void read_info(void*);
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt void read_tp(void*);
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt void read_tc(void*);
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Huntprotected:
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt virtual void got_info(const std::string&, const std::string&);
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt virtual void got_ntps(size_t);
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt virtual void got_tp_start(const std::string&, size_t);
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt virtual void got_tp_end(struct timeval*, const std::string&);
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt virtual void got_tc_start(const std::string&);
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt virtual void got_tc_stdout_line(const std::string&);
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt virtual void got_tc_stderr_line(const std::string&);
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt virtual void got_tc_end(const std::string&, struct timeval*,
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt const std::string&);
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt virtual void got_eof(void);
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Huntpublic:
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt atf_tps_reader(std::istream&);
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt virtual ~atf_tps_reader(void);
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt void read(void);
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt};
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt} // namespace atf_report
cfb1587eb9a6dc6d1d36ea0344e1b20068b81e88Evan Hunt} // namespace tools
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt#endif // !defined(TOOLS_FORMATS_HPP)
5caf26b168332b69c9071aac6b72ef0f50436a14Evan Hunt