summaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/.gitignore2
-rw-r--r--src/test/Makefile.am25
-rw-r--r--src/test/callbackgentest.cpp35
-rw-r--r--src/test/templates/callbackgentest.mako.hpp17
-rw-r--r--src/test/yaml/callbackgentest/one.yaml62
-rw-r--r--src/test/yaml/callbackgentest/two.yaml27
6 files changed, 168 insertions, 0 deletions
diff --git a/src/test/.gitignore b/src/test/.gitignore
index c3c7a0c..9c5e674 100644
--- a/src/test/.gitignore
+++ b/src/test/.gitignore
@@ -7,3 +7,5 @@
/propertywatchtest
/propertywatchgentest.hpp
/propertywatchgentest
+/callbackgentest.hpp
+/callbackgentest
diff --git a/src/test/Makefile.am b/src/test/Makefile.am
index fe66203..f4e2e46 100644
--- a/src/test/Makefile.am
+++ b/src/test/Makefile.am
@@ -104,3 +104,28 @@ propertywatchtest_LDADD = \
${gtest_ldadd} \
${SDBUSPLUS_LIBS} \
$(builddir)/../propertywatch.o
+
+check_PROGRAMS += callbackgentest
+callbackgentest_SOURCES = \
+ callbackgentest.cpp
+callbackgentest_CXXFLAGS = \
+ $(gtest_cflags)
+callbackgentest_LDFLAGS = \
+ $(OESDK_TESTCASE_FLAGS)
+callbackgentest_LDADD = \
+ ${gtest_ldadd}
+
+BUILT_SOURCES += callbackgentest.hpp
+CLEANFILES += callbackgentest.hpp
+
+CALLBACK_TEST_GEN_DEPS = \
+ templates/callbackgentest.mako.hpp \
+ yaml/callbackgentest
+
+callbackgentest.hpp: $(CALLBACK_TEST_GEN_DEPS)
+ $(AM_V_GEN) $(PYTHON) $(PDMGEN) \
+ -t callbackgentest.mako.hpp \
+ -p "${TEMPLATESEARCH}" \
+ -d yaml/callbackgentest \
+ -o $(builddir)/$@ \
+ generate-cpp
diff --git a/src/test/callbackgentest.cpp b/src/test/callbackgentest.cpp
new file mode 100644
index 0000000..77fe60a
--- /dev/null
+++ b/src/test/callbackgentest.cpp
@@ -0,0 +1,35 @@
+#include <array>
+#include <string>
+#include <gtest/gtest.h>
+#include "data_types.hpp"
+
+using namespace phosphor::dbus::monitoring;
+
+using Index = std::map<std::tuple<size_t, size_t, size_t>, size_t>;
+
+#include "callbackgentest.hpp"
+
+const std::array<std::tuple<std::string, size_t>, 4> expectedCallbacks =
+{
+ {
+ std::tuple<std::string, size_t>{"int32_t", 0},
+ std::tuple<std::string, size_t>{"int32_t", 0},
+ std::tuple<std::string, size_t>{"std::string", 1},
+ std::tuple<std::string, size_t>{"std::string", 2},
+ }
+};
+
+TEST(CallbackGenTest, CallbacksSameSize)
+{
+ ASSERT_EQ(sizeof(expectedCallbacks), sizeof(callbacks));
+}
+
+TEST(CallbackGenTest, CallbacksSameContent)
+{
+ size_t i;
+ for (i = 0; i < expectedCallbacks.size(); ++i)
+ {
+ ASSERT_EQ(callbacks[i],
+ expectedCallbacks[i]);
+ }
+}
diff --git a/src/test/templates/callbackgentest.mako.hpp b/src/test/templates/callbackgentest.mako.hpp
new file mode 100644
index 0000000..f387c23
--- /dev/null
+++ b/src/test/templates/callbackgentest.mako.hpp
@@ -0,0 +1,17 @@
+auto storageCount = ${len(instances)};
+
+const std::array<Index, ${len(instancegroups)}> indicies = {{
+% for g in instancegroups:
+ {
+ % for i in g.members:
+ {Index::key_type{${i[0]}, ${i[2]}, ${i[3]}}, ${i[5]}},
+ % endfor
+ },
+% endfor
+}};
+
+const std::array<std::tuple<std::string, size_t>, ${len(callbacks)}> callbacks = {{
+% for c in callbacks:
+ std::tuple<std::string, size_t>{"${c.datatype}", ${c.instances}},
+% endfor
+}};
diff --git a/src/test/yaml/callbackgentest/one.yaml b/src/test/yaml/callbackgentest/one.yaml
new file mode 100644
index 0000000..e94b262
--- /dev/null
+++ b/src/test/yaml/callbackgentest/one.yaml
@@ -0,0 +1,62 @@
+# Validate two callbacks that share an index
+# and a single callback with its own index.
+#
+# Expecting three callbacks pointing at two indicies.
+
+- name: test path group 1
+ class: group
+ group: path
+ members:
+ - meta: path
+ path: /xyz/openbmc_project/testing/inst4
+
+- name: test path group 2
+ class: group
+ group: path
+ members:
+ - meta: path
+ path: /xyz/openbmc_project/testing/inst4
+ - meta: path
+ path: /xyz/openbmc_project/testing/inst6
+
+- name: test property group 1
+ class: group
+ group: property
+ type: int32
+ members:
+ - interface: xyz.openbmc_project.Sensor.Iface1
+ meta: property
+ property: Value
+
+- name: test property group 2
+ class: group
+ group: property
+ type: string
+ members:
+ - interface: xyz.openbmc_project.Sensor.Iface3
+ meta: property
+ property: Value2
+
+- name: test journal callback 1
+ class: callback
+ callback: journal
+ paths: test path group 1
+ properties: test property group 1
+ severity: INFO
+ message: Hello world from PDM!
+
+- name: test journal callback 2
+ class: callback
+ callback: journal
+ paths: test path group 1
+ properties: test property group 1
+ severity: INFO
+ message: Hello world from PDM!
+
+- name: test journal callback 3
+ class: callback
+ callback: journal
+ paths: test path group 2
+ properties: test property group 2
+ severity: INFO
+ message: Hello world from PDM!
diff --git a/src/test/yaml/callbackgentest/two.yaml b/src/test/yaml/callbackgentest/two.yaml
new file mode 100644
index 0000000..6037f43
--- /dev/null
+++ b/src/test/yaml/callbackgentest/two.yaml
@@ -0,0 +1,27 @@
+# Validate the same callback name works in differnt config files.
+
+- name: test path group 1
+ class: group
+ group: path
+ members:
+ - meta: path
+ path: /xyz/openbmc_project/testing/inst4
+ - meta: path
+ path: /xyz/openbmc_project/testing/inst6
+
+- name: test property group 1
+ class: group
+ group: property
+ type: string
+ members:
+ - interface: xyz.openbmc_project.Sensor.Iface3
+ meta: property
+ property: Value2
+
+- name: test journal callback 1
+ class: callback
+ callback: journal
+ paths: test path group 1
+ properties: test property group 1
+ severity: INFO
+ message: Hello world from PDM!
OpenPOWER on IntegriCloud