μHAL (v2.8.17)
Part of the IPbus software repository
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
test_single.cpp
Go to the documentation of this file.
1/*
2---------------------------------------------------------------------------
3
4 This file is part of uHAL.
5
6 uHAL is a hardware access library and programming framework
7 originally developed for upgrades of the Level-1 trigger of the CMS
8 experiment at CERN.
9
10 uHAL is free software: you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation, either version 3 of the License, or
13 (at your option) any later version.
14
15 uHAL is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with uHAL. If not, see <http://www.gnu.org/licenses/>.
22
23 Marc Magrans de Abril, CERN
24 email: marc.magrans.de.abril <AT> cern.ch
25
26 Andrew Rose, Imperial College, London
27 email: awr01 <AT> imperial.ac.uk
28
29 Tom Williams, Rutherford Appleton Laboratory, Oxfordshire
30 email: tom.williams <AT> cern.ch
31
32---------------------------------------------------------------------------
33*/
34
35#include "uhal/uhal.hpp"
36
39#include "uhal/tests/tools.hpp"
40
41#include <boost/test/unit_test.hpp>
42#include <boost/filesystem.hpp>
43
44#include <vector>
45#include <algorithm>
46#include <string>
47#include <iostream>
48#include <cstdlib>
49#include <typeinfo>
50
51
52namespace uhal {
53namespace tests {
54
55
56UHAL_TESTS_DEFINE_CLIENT_TEST_CASES(SingleReadWriteTestSuite, connect_write_read, DummyHardwareFixture,
57{
58 HwInterface hw = getHwInterface();
59
60 // hw.ping();
61 uint32_t x1 = static_cast<uint32_t> ( rand() );
62 uint32_t x2 = static_cast<uint32_t> ( rand() );
63 hw.getNode ( "SUBSYSTEM1.REG" ).write ( x1 );
64 hw.getNode ( "SUBSYSTEM2.REG" ).write ( x2 );
65 ValWord< uint32_t > mem1 = hw.getNode ( "SUBSYSTEM1.REG" ).read();
66 ValWord< uint32_t > mem2 = hw.getNode ( "SUBSYSTEM2.REG" ).read();
67 BOOST_CHECK ( !mem1.valid() );
68 BOOST_CHECK ( !mem2.valid() );
69 BOOST_CHECK_THROW ( mem1.value(), uhal::exception::NonValidatedMemory );
70 BOOST_CHECK_THROW ( mem2.value(), uhal::exception::NonValidatedMemory );
72 BOOST_CHECK ( mem1.valid() );
73 BOOST_CHECK_EQUAL ( mem1.value(), x1 );
74 BOOST_CHECK_EQUAL ( mem2.value(), x2 );
75}
76)
77
78
80{
81 //get location of address file. Assumption: it is located with the connection file
82 std::string address_file;
83 {
84 boost::filesystem::path conn_fn ( connectionFileURI );
85 boost::filesystem::path fn ( "dummy_address.xml" );
86 address_file = ( conn_fn.parent_path() /fn ).string();
87 }
88 //get the parameters from the file
89 std::string uri = getHwInterface().uri();
92
93 uint32_t x = static_cast<uint32_t> ( rand() );
94 hw.getNode ( "REG" ).write ( x );
96 BOOST_CHECK ( !mem.valid() );
97 BOOST_CHECK_THROW ( mem.value(),uhal::exception::NonValidatedMemory );
99 BOOST_CHECK ( mem.valid() );
101}
102)
103
104
105UHAL_TESTS_DEFINE_CLIENT_TEST_CASES(SingleReadWriteTestSuite, search_device_id, MinimalFixture,
106{
107 ConnectionManager manager (connectionFileURI);
108 std::vector<std::string> ids = manager.getDevices ( "^" + deviceId + "$" );
109 BOOST_CHECK ( std::find ( ids.begin(),ids.end(), deviceId ) != ids.end() );
110}
111)
112
113
114} // end ns tests
115} // end ns uhal
116
A class to open and manage XML connection files and wrap up the interfaces to the NodeTreeBuilder and...
HwInterface getDevice(const std::string &aId)
Retrieves protocol, host, and port from the connection file to create an IPbus Client Retrieves the a...
A class which bundles a node tree and an IPbus client interface together providing everything you nee...
Definition: HwInterface.hpp:56
const Node & getNode() const
Retrieve the top-level node.
void dispatch()
Make the IPbus client issue a dispatch.
void setTimeoutPeriod(const uint32_t &aTimeoutPeriod)
A method to modify the timeout period for any pending or future transactions.
ValWord< uint32_t > read() const
Read a single, unmasked, unsigned word.
Definition: Node.cpp:611
ValHeader write(const uint32_t &aValue) const
Write a single, unmasked word to a register.
Definition: Node.cpp:516
bool valid()
Return whether the Validated memory is marked as valid.
Definition: ValMem.cpp:217
std::vector< T > value() const
Return the value of the validated memory with check on validity.
Definition: ValMem.cpp:375
T value() const
Return the value of the validated memory with check on validity.
Definition: ValMem.cpp:141
bool valid()
Return whether the Validated memory is marked as valid.
Definition: ValMem.cpp:112
None tests(nox.Session session)
Definition: noxfile.py:19
BOOST_CHECK_THROW(hw.getNode("REG").writeBlockOffset(xx, 0), uhal::exception::BulkTransferOffsetRequestedForSingleRegister)
std::string uri
Definition: test_single.cpp:89
BOOST_CHECK_EQUAL(mem.size(), N)
BOOST_CHECK_NO_THROW(hw.getNode("REG").writeBlock(xx))
ValVector< uint32_t > mem
BOOST_CHECK(!mem.valid())
HwInterface hw
on_the_fly_connect_write_read
Definition: test_single.cpp:79
boost::filesystem::path fn("dummy_address.xml")
uint32_t x
Definition: test_single.cpp:93
#define UHAL_TESTS_DEFINE_CLIENT_TEST_CASES(test_suite_name, test_case_name, test_fixture, test_case_contents)
Definition: definitions.hpp:53