1 #include "cheetah/psrdada/test/DadaReadWriteClientTest.h" 2 #include "cheetah/psrdada/DadaWriteClient.h" 3 #include "cheetah/psrdada/DadaReadClient.h" 4 #include "cheetah/psrdada/test_utils/TestDadaDB.h" 13 DadaReadWriteClientTest::DadaReadWriteClientTest()
19 DadaReadWriteClientTest::~DadaReadWriteClientTest()
23 void DadaReadWriteClientTest::SetUp()
27 void DadaReadWriteClientTest::TearDown()
31 TEST_F(DadaReadWriteClientTest, test_default_params)
33 test_utils::TestDadaDB test_db(4, 4096, 4, 4096);
36 DadaWriteClient writer(test_db.key(), [](std::ostream&){});
37 ASSERT_TRUE(writer.data_buffer_size()==test_db.data_buffer_size());
38 ASSERT_TRUE(writer.data_buffer_count()==test_db.num_data_buffers());
39 ASSERT_TRUE(writer.header_buffer_size()==test_db.header_buffer_size());
40 ASSERT_TRUE(writer.header_buffer_count()==test_db.num_header_buffers());
42 DadaReadClient reader(test_db.key(), _engine, [](std::istream&, std::exception_ptr){});
43 ASSERT_TRUE(reader.data_buffer_size()==test_db.data_buffer_size());
44 ASSERT_TRUE(reader.data_buffer_count()==test_db.num_data_buffers());
45 ASSERT_TRUE(reader.header_buffer_size()==test_db.header_buffer_size());
46 ASSERT_TRUE(reader.header_buffer_count()==test_db.num_header_buffers());
52 TEST_F(DadaReadWriteClientTest, test_multiblock_readwrite)
54 test_utils::TestDadaDB test_db(4, 4096, 4, 4096);
56 std::string write_header(
"This is some header data!");
58 std::vector<char> input_data(8*1024+222);
60 DadaWriteClient writer(test_db.key(), [&](std::ostream& out){
63 auto it = input_data.begin();
64 writer.write(it, input_data.end());
67 std::string read_header;
68 DadaReadClient reader(test_db.key(), _engine, [&](std::istream& in, std::exception_ptr ){
72 std::vector<char> output_data(8*1024+222);
73 auto it = output_data.begin();
74 reader.read(it, output_data.end());
75 for (std::size_t jj=0; jj<input_data.size(); ++jj)
77 ASSERT_EQ(output_data[jj],input_data[jj]);
83 TEST_F(DadaReadWriteClientTest, test_header_overflow)
85 test_utils::TestDadaDB test_db(1, 1, 1, 1);
88 std::string write_header(
"This is some header data!");
89 ASSERT_ANY_THROW(DadaWriteClient writer(test_db.key(), [&](std::ostream& out){out << write_header;}));
94 TEST_F(DadaReadWriteClientTest, test_multi_sequence_readwrite)
96 test_utils::TestDadaDB test_db(16, 4096, 4, 4096);
100 std::size_t observation_id = 0;
101 auto new_sequence_callback = [&](std::ostream& out)
103 out <<
"This is the header for observation ID " << observation_id <<
"\n";
108 DadaWriteClient writer(test_db.key(), new_sequence_callback);
110 std::vector<float> data(4096+2048);
111 for (ii=0; ii<data.size(); ++ii)
113 data[ii] = (float) (ii%255);
115 auto it = data.begin();
116 writer.write(it,data.end());
117 writer.new_sequence();
119 writer.write(it,data.end());
122 auto next_sequence_callback = [&](std::istream& stream, std::exception_ptr)
124 std::string tmp_string;
125 while (!stream.eof())
127 stream >> tmp_string;
132 DadaReadClient reader(test_db.key(), _engine, next_sequence_callback);
134 std::vector<float> partial_data(2048);
135 auto it = partial_data.begin();
136 reader.read(it, partial_data.end());
137 for (ii=0; ii<partial_data.size(); ++ii)
139 ASSERT_EQ(partial_data[ii],(
float) (ii%255));
141 reader.next_sequence();
143 it = partial_data.begin();
144 reader.read(it, partial_data.end());
145 for (ii=0; ii<partial_data.size(); ++ii)
147 ASSERT_EQ(partial_data[ii],(
float) (ii%255));
Some limits and constants for FLDO.