ifw-daq 3.1.0
IFW Data Acquisition modules
Loading...
Searching...
No Matches
testUnmergedData.cpp
Go to the documentation of this file.
1/**
2 * @file
3 * @copyright
4 * (c) Copyright ESO 2024
5 * All Rights Reserved
6 * ESO (eso.org) is an Intergovernmental Organisation, and therefore special legal conditions apply.
7 */
8
9#include <merge.hpp>
10
11#include <daq/fits/cfitsio.hpp>
12#include <gmock/gmock.h>
13#include <gtest/gtest.h>
14
15using namespace ::testing;
16namespace daq::dpm::merge {
17namespace {
18struct MockReporter : StatusReporter {
19 MOCK_METHOD(void, PostAlert, (std::string const& id, std::string const& message), (override));
20};
21
22} // namespace
23
24class TestUnmergedAlert : public ::testing::Test {
25public:
27 : m_reporter()
28 , m_logger(log4cplus::Logger::getInstance("test.dpm.merge"))
29 , m_fits_buffer(4096u)
30 , m_file("NAME",
31 "/foo/bar.fits",
32 "/location/file.fits",
33 {},
34 {},
35 true,
36 std::move(m_fits_buffer).GetOwnedFile()) {
37 }
38 void SetUp() {
39 ASSERT_TRUE(m_file.GetFitsFile());
41 }
43 log4cplus::Logger m_logger;
46};
47
48class TestUnmergedNoAlert : public ::testing::Test {
49public:
51 : m_reporter()
52 , m_logger(log4cplus::Logger::getInstance("test.dpm.merge"))
53 , m_fits_buffer(4096u)
54 , m_file("NAME",
55 "/foo/bar.fits",
56 "/location/file.fits",
57 {},
58 {},
59 false,
60 std::move(m_fits_buffer).GetOwnedFile()) {
61 }
62 void SetUp() {
63 ASSERT_TRUE(m_file.GetFitsFile());
64 ASSERT_FALSE(m_file.AlertUnmergeable());
65 }
67 log4cplus::Logger m_logger;
70};
71
72TEST_F(TestUnmergedAlert, EmptyFitsProduceNoAlert) {
73 fits::InitPrimaryHduNoImage(m_file.GetFitsFile());
74 EXPECT_CALL(m_reporter, PostAlert(_, _)).Times(0);
75 CheckUnmergedPrimaryHduData(m_logger, m_reporter, m_file);
76}
77
78TEST_F(TestUnmergedAlert, NonEmptyFitsProduceAlert) {
79 int status = 0;
80 long naxes[2] = {2, 2};
81 fits_create_img(m_file.GetFitsFile(), BYTE_IMG, 2, naxes, &status);
82 ASSERT_EQ(0, status);
83
84 // Test
85 EXPECT_CALL(m_reporter, PostAlert(_, MatchesRegex("Unmerged data: Source file has data.*")))
86 .Times(1);
87 CheckUnmergedPrimaryHduData(m_logger, m_reporter, m_file);
88}
89
90TEST_F(TestUnmergedNoAlert, NonEmptyFitsProduceNoAlertIfDisabled) {
91 int status = 0;
92 long naxes[2] = {2, 2};
93 fits_create_img(m_file.GetFitsFile(), BYTE_IMG, 2, naxes, &status);
94 ASSERT_EQ(0, status);
95
96 // Test
97 EXPECT_CALL(m_reporter, PostAlert(_, _)).Times(0);
98 CheckUnmergedPrimaryHduData(m_logger, m_reporter, m_file);
99}
100
101} // namespace daq::dpm::merge
Contains functions and data structures related to cfitsio.
Input FITS source file.
Definition: sources.hpp:144
bool AlertUnmergeable() const noexcept
Definition: sources.hpp:174
virtual void PostAlert(std::string const &id, std::string const &message)=0
Post event.
In-memory FITS file.
Definition: cfitsio.hpp:44
void CheckUnmergedPrimaryHduData(log4cplus::Logger const &logger, StatusReporter &status_reporter, FitsFileSource const &source)
Check for data in primary HDU which would not be merged and produce alert.
Definition: merge.cpp:15
TEST_F(TestMergeKeywords, MergeEmptyStillSortsKeywords)
Definition: testMerge.cpp:112
void InitPrimaryHduNoImage(fitsfile *ptr)
Initializes an empty FITS file with a primary HDU.
Definition: cfitsio.cpp:144
MOCK_METHOD(void, PostAlert,(std::string const &id, std::string const &message),(override))
ASSERT_EQ(meta.keyword_rules.size(), 1u)
ASSERT_TRUE(std::holds_alternative< OlasReceiver >(spec.receivers[0]))