Skip to content

Commit d0435f2

Browse files
committed
Make use of layer_generator
1 parent e8f7b0b commit d0435f2

12 files changed

Lines changed: 70 additions & 147 deletions

test/CMakeLists.txt

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ include(CetTest)
55

66
cet_test_env(SPDLOG_LEVEL=debug)
77

8+
add_library(layer_generator layer_generator.cpp)
9+
target_link_libraries(layer_generator PRIVATE phlex::core)
10+
811
cet_test(concepts SOURCE concepts.cpp LIBRARIES phlex::core)
912
cet_test(string_literal SOURCE string_literal.cpp LIBRARIES phlex::utilities)
1013
cet_test(type_deduction SOURCE type_deduction.cpp LIBRARIES
@@ -29,9 +32,10 @@ cet_test(
2932
LIBRARIES
3033
phlex::core
3134
Boost::json
35+
layer_generator
3236
)
3337
cet_test(vector_of_abstract_types USE_CATCH2_MAIN SOURCE
34-
vector_of_abstract_types.cpp LIBRARIES phlex::core
38+
vector_of_abstract_types.cpp LIBRARIES phlex::core layer_generator
3539
)
3640
cet_test(
3741
cached_execution
@@ -59,6 +63,7 @@ cet_test(
5963
LIBRARIES
6064
phlex::core
6165
spdlog::spdlog
66+
layer_generator
6267
)
6368
cet_test(filter_impl USE_CATCH2_MAIN SOURCE filter_impl.cpp LIBRARIES
6469
phlex::core
@@ -100,6 +105,7 @@ cet_test(
100105
TBB::tbb
101106
phlex::core
102107
spdlog::spdlog
108+
layer_generator
103109
)
104110
cet_test(
105111
multiple_function_registration
@@ -165,9 +171,15 @@ cet_test(
165171
cet_test(product_query USE_CATCH2_MAIN SOURCE product_query.cpp LIBRARIES
166172
phlex::core
167173
)
168-
cet_test(provider_test USE_CATCH2_MAIN SOURCE provider_test.cpp LIBRARIES
169-
phlex::core
170-
)
174+
cet_test(
175+
provider_test
176+
USE_CATCH2_MAIN
177+
SOURCE
178+
provider_test.cpp
179+
LIBRARIES
180+
phlex::core
181+
layer_generator
182+
)
171183
cet_test(
172184
type_distinction
173185
USE_CATCH2_MAIN
@@ -187,6 +199,7 @@ cet_test(
187199
phlex::core
188200
TBB::tbb
189201
spdlog::spdlog
202+
layer_generator
190203
)
191204

192205
add_subdirectory(benchmarks)

test/allowed_families.cpp

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "phlex/core/framework_graph.hpp"
22
#include "phlex/model/data_cell_index.hpp"
3-
#include "phlex/model/product_store.hpp"
3+
#include "test/layer_generator.hpp"
44

55
#include "catch2/catch_test_macros.hpp"
66

@@ -10,22 +10,6 @@ using namespace phlex::experimental;
1010
using namespace oneapi::tbb;
1111

1212
namespace {
13-
14-
void cells_to_process(framework_driver& driver)
15-
{
16-
auto job_index = data_cell_index::base_ptr();
17-
driver.yield(job_index);
18-
19-
auto run_index = job_index->make_child(0, "run");
20-
driver.yield(run_index);
21-
22-
auto subrun_index = run_index->make_child(0, "subrun");
23-
driver.yield(subrun_index);
24-
25-
auto event_index = subrun_index->make_child(0, "event");
26-
driver.yield(event_index);
27-
}
28-
2913
data_cell_index provide_index(data_cell_index const& index) { return index; }
3014

3115
void check_two_ids(data_cell_index const& parent_id, data_cell_index const& id)
@@ -50,7 +34,12 @@ namespace {
5034

5135
TEST_CASE("Testing families", "[data model]")
5236
{
53-
framework_graph g{cells_to_process, 2};
37+
layer_generator gen;
38+
gen.add_layer("run", {"job", 1});
39+
gen.add_layer("subrun", {"run", 1});
40+
gen.add_layer("event", {"subrun", 1});
41+
42+
framework_graph g{gen, 2};
5443

5544
// Wire up providers for each level
5645
g.provide("run_id_provider", provide_index, concurrency::unlimited)

test/different_hierarchies.cpp

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,12 @@
3232

3333
#include "phlex/core/framework_graph.hpp"
3434
#include "phlex/model/data_cell_index.hpp"
35-
#include "phlex/model/product_store.hpp"
35+
#include "test/layer_generator.hpp"
3636

3737
#include "catch2/catch_test_macros.hpp"
38-
#include "fmt/std.h"
39-
#include "spdlog/spdlog.h"
4038

4139
#include <atomic>
42-
#include <ranges>
4340
#include <string>
44-
#include <vector>
4541

4642
using namespace phlex::experimental;
4743

@@ -50,40 +46,23 @@ namespace {
5046
unsigned int provide_number(data_cell_index const& index) { return index.number(); }
5147

5248
void add(std::atomic<unsigned int>& counter, unsigned int number) { counter += number; }
49+
}
5350

51+
TEST_CASE("Different hierarchies used with fold", "[graph]")
52+
{
5453
// job -> run -> event layers
5554
constexpr auto index_limit = 2u;
5655
constexpr auto number_limit = 5u;
5756

58-
// job -> event levels
57+
// job -> event layers
5958
constexpr auto top_level_event_limit = 10u;
6059

61-
void cells_to_process(framework_driver& driver)
62-
{
63-
auto job_index = data_cell_index::base_ptr();
64-
driver.yield(job_index);
65-
66-
// job -> run -> event layers
67-
for (unsigned i : std::views::iota(0u, index_limit)) {
68-
auto run_index = job_index->make_child(i, "run");
69-
driver.yield(run_index);
70-
for (unsigned j : std::views::iota(0u, number_limit)) {
71-
auto event_index = run_index->make_child(j, "event");
72-
driver.yield(event_index);
73-
}
74-
}
60+
layer_generator gen;
61+
gen.add_layer("run", {"job", index_limit});
62+
gen.add_layer("event", {"run", number_limit});
63+
gen.add_layer("event", {"job", top_level_event_limit});
7564

76-
// job -> event layers
77-
for (unsigned i : std::views::iota(0u, top_level_event_limit)) {
78-
auto tp_event_index = job_index->make_child(i, "event");
79-
driver.yield(tp_event_index);
80-
}
81-
}
82-
}
83-
84-
TEST_CASE("Different hierarchies used with fold", "[graph]")
85-
{
86-
framework_graph g{cells_to_process};
65+
framework_graph g{gen};
8766

8867
// Register provider
8968
g.provide("provide_number", provide_number, concurrency::unlimited)

test/fold.cpp

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,12 @@
2525

2626
#include "phlex/core/framework_graph.hpp"
2727
#include "phlex/model/data_cell_index.hpp"
28-
#include "phlex/model/product_store.hpp"
28+
#include "test/layer_generator.hpp"
2929

3030
#include "catch2/catch_test_macros.hpp"
31-
#include "fmt/std.h"
32-
#include "spdlog/spdlog.h"
3331

3432
#include <atomic>
35-
#include <ranges>
3633
#include <string>
37-
#include <vector>
3834

3935
using namespace phlex::experimental;
4036

@@ -50,21 +46,11 @@ TEST_CASE("Different data layers of fold", "[graph]")
5046
constexpr auto index_limit = 2u;
5147
constexpr auto number_limit = 5u;
5248

53-
auto cells_to_process = [index_limit, number_limit](framework_driver& driver) {
54-
auto job_index = data_cell_index::base_ptr();
55-
driver.yield(job_index);
56-
for (unsigned i : std::views::iota(0u, index_limit)) {
57-
auto run_index = job_index->make_child(i, "run");
58-
driver.yield(run_index);
59-
for (unsigned j : std::views::iota(0u, number_limit)) {
60-
auto event_index = run_index->make_child(j, "event");
61-
driver.yield(event_index);
62-
}
63-
}
64-
};
65-
66-
// framework_graph g{cells_to_process};
67-
framework_graph g{cells_to_process};
49+
layer_generator gen;
50+
gen.add_layer("run", {"job", index_limit});
51+
gen.add_layer("event", {"run", number_limit});
52+
53+
framework_graph g{gen};
6854

6955
g.provide("provide_number", provide_number, concurrency::unlimited)
7056
.output_product("number"_in("event"));

test/hierarchical_nodes.cpp

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
#include "phlex/core/framework_graph.hpp"
2020
#include "phlex/model/data_cell_index.hpp"
21-
#include "phlex/model/product_store.hpp"
21+
#include "test/layer_generator.hpp"
2222
#include "test/products_for_output.hpp"
2323

2424
#include "catch2/catch_test_macros.hpp"
@@ -28,29 +28,14 @@
2828
#include <atomic>
2929
#include <cmath>
3030
#include <ctime>
31-
#include <ranges>
3231
#include <string>
33-
#include <vector>
3432

3533
using namespace phlex::experimental;
3634

3735
namespace {
3836
constexpr auto index_limit = 2u;
3937
constexpr auto number_limit = 5u;
4038

41-
void cells_to_process(framework_driver& driver)
42-
{
43-
auto job_index = data_cell_index::base_ptr();
44-
driver.yield(job_index);
45-
for (unsigned i : std::views::iota(0u, index_limit)) {
46-
auto run_index = job_index->make_child(i, "run");
47-
driver.yield(run_index);
48-
for (unsigned j : std::views::iota(0u, number_limit)) {
49-
driver.yield(run_index->make_child(j, "event"));
50-
}
51-
}
52-
}
53-
5439
auto square(unsigned int const num) { return num * num; }
5540

5641
struct data_for_rms {
@@ -97,7 +82,11 @@ namespace {
9782

9883
TEST_CASE("Hierarchical nodes", "[graph]")
9984
{
100-
framework_graph g{cells_to_process};
85+
layer_generator gen;
86+
gen.add_layer("run", {"job", index_limit});
87+
gen.add_layer("event", {"run", number_limit});
88+
89+
framework_graph g{gen};
10190

10291
g.provide("provide_time",
10392
[](data_cell_index const& index) -> std::time_t {

test/layer_generator.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ namespace phlex::experimental {
1818
layer_generator();
1919
void add_layer(std::string layer_name, layer_spec lspec);
2020

21-
void operator()(framework_driver& driver) const { execute(driver, data_cell_index::base_ptr()); }
21+
void operator()(framework_driver& driver) const
22+
{
23+
execute(driver, data_cell_index::base_ptr());
24+
}
2225

2326
private:
2427
void execute(framework_driver& driver, data_cell_index_ptr index, bool recurse = true) const;

test/memory-checks/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
cet_test(many_events SOURCE many_events.cpp LIBRARIES Boost::json phlex::core)
1+
cet_test(many_events SOURCE many_events.cpp LIBRARIES Boost::json phlex::core layer_generator)

test/memory-checks/many_events.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include "phlex/core/framework_graph.hpp"
2-
#include "phlex/model/product_store.hpp"
2+
#include "test/layer_generator.hpp"
33

44
using namespace phlex::experimental;
55

@@ -9,21 +9,15 @@ namespace {
99

1010
int main()
1111
{
12-
constexpr auto max_events{100'000u};
13-
// constexpr auto max_events{1'000'000u};
1412
// spdlog::flush_on(spdlog::level::trace);
1513

16-
auto cells_to_process = [](framework_driver& driver) {
17-
auto job_index = data_cell_index::base_ptr();
18-
driver.yield(job_index);
14+
constexpr auto max_events{100'000u};
15+
16+
layer_generator gen;
17+
gen.add_layer("event", {"job", max_events, 1u});
1918

20-
for (unsigned int i : std::views::iota(1u, max_events + 1)) {
21-
auto event_index = job_index->make_child(i, "event");
22-
driver.yield(event_index);
23-
}
24-
};
19+
framework_graph g{gen};
2520

26-
framework_graph g{cells_to_process};
2721
g.provide("provide_number", [](data_cell_index const& id) -> unsigned { return id.number(); })
2822
.output_product("number"_in("event"));
2923
g.transform("pass_on", pass_on, concurrency::unlimited)

test/product_handle.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include "phlex/model/data_cell_index.hpp"
22
#include "phlex/model/handle.hpp"
3-
#include "phlex/model/product_store.hpp"
43

54
#include "catch2/catch_test_macros.hpp"
65

test/provider_test.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "phlex/core/framework_graph.hpp"
22
#include "phlex/model/data_cell_index.hpp"
3-
#include "phlex/model/product_store.hpp"
3+
#include "test/layer_generator.hpp"
44

55
#include "catch2/catch_test_macros.hpp"
66
#include "fmt/std.h"
@@ -33,17 +33,10 @@ TEST_CASE("provider_test")
3333
// constexpr auto max_events{1'000'000u};
3434
spdlog::flush_on(spdlog::level::trace);
3535

36-
auto levels_to_process = [](framework_driver& driver) {
37-
auto job_index = data_cell_index::base_ptr();
38-
driver.yield(job_index);
36+
layer_generator gen;
37+
gen.add_layer("spill", {"job", max_events, 1u});
3938

40-
for (unsigned int i : std::views::iota(1u, max_events + 1)) {
41-
auto index = job_index->make_child(i, "spill");
42-
driver.yield(index);
43-
}
44-
};
45-
46-
framework_graph g{levels_to_process};
39+
framework_graph g{gen};
4740

4841
g.provide("my_name_here", give_me_vertices, concurrency::unlimited)
4942
.output_product("happy_vertices"_in("spill"));

0 commit comments

Comments
 (0)