Project
Loading...
Searching...
No Matches
TimeFrameTest.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#define BOOST_TEST_MODULE Test TimeFrame TimeFrametest
13#define BOOST_TEST_MAIN
14#define BOOST_TEST_DYN_LINK
15#include <boost/test/unit_test.hpp>
16#include "TimeFrame/TimeFrame.h"
17#include <fairmq/Message.h>
18#include <fairmq/Parts.h>
19#include <fairmq/TransportFactory.h>
20#include "Headers/DataHeader.h"
21#include "TFile.h"
22
23namespace o2
24{
25namespace dataformats
26{
27BOOST_AUTO_TEST_CASE(MessageSizePair_test)
28{
29 size_t S = 100;
30 auto* buffer = new char[S];
31
32 // fill the buffer with something
33 buffer[0] = 'a';
34 buffer[S - 1] = 'z';
35
37
38 // assert some properties on MessageSizePair
39 BOOST_CHECK(mes.size == S);
41
42 // check ROOT IO of MessageSizePair
43 TFile* file = TFile::Open("mspair.root", "RECREATE");
44 if (file) {
45 file->WriteObject(&mes, "MessageSizePair");
46 file->Close();
47 }
48
49 MessageSizePair* ptr = nullptr;
50 TFile* infile = TFile::Open("mspair.root", "READ");
51 if (infile) {
52 infile->GetObject("MessageSizePair", ptr);
53 infile->Close();
54 BOOST_CHECK(ptr != nullptr);
55 }
56 BOOST_CHECK(ptr->size == S);
57 // test first and last characters in buffer to see if correctly streamed
58 BOOST_CHECK(ptr->buffer[0] == buffer[0]);
59 BOOST_CHECK(ptr->buffer[S - 1] == buffer[S - 1]);
60}
61
62BOOST_AUTO_TEST_CASE(TimeFrame_test)
63{
64 fair::mq::Parts messages;
65
66 // we use the ZMQ Factory to create some messages
67 auto zmq(fair::mq::TransportFactory::CreateTransportFactory("zeromq"));
68 BOOST_CHECK(zmq);
69 messages.AddPart(zmq->CreateMessage(1000));
70
72 messages.AddPart(zmq->NewSimpleMessage(dh));
73
74 TimeFrame frame(messages);
75 BOOST_CHECK(frame.GetNumParts() == 2);
76
77 // test ROOT IO
78 TFile* file = TFile::Open("timeframe.root", "RECREATE");
79 if (file) {
80 file->WriteObject(&frame, "Timeframe");
81 file->Close();
82 }
83
84 TimeFrame* ptr = nullptr;
85 TFile* infile = TFile::Open("timeframe.root", "READ");
86 if (infile) {
87 infile->GetObject("Timeframe", ptr);
88 infile->Close();
89 BOOST_CHECK(ptr != nullptr);
90 }
91
92 // test access to data
93 BOOST_CHECK(ptr->GetNumParts() == 2);
94 for (int i = 0; i < ptr->GetNumParts(); ++i) {
95 BOOST_CHECK(ptr->GetPart(i).size == messages[i].GetSize());
96 }
97}
98
99} // namespace dataformats
100} // namespace o2
int32_t i
TBranch * ptr
size_t GetNumParts() const
Definition TimeFrame.h:74
GLuint buffer
Definition glcorearb.h:655
BOOST_AUTO_TEST_CASE(MessageSizePair_test)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
the main header struct
Definition DataHeader.h:618
BOOST_CHECK(tree)