Skip to content

Commit

Permalink
Simpify disposables tests (#527)
Browse files Browse the repository at this point in the history
* Simpify disposables tests

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
victimsnino and pre-commit-ci[bot] authored Feb 17, 2024
1 parent d90e39e commit 09b74b8
Showing 1 changed file with 13 additions and 10 deletions.
23 changes: 13 additions & 10 deletions src/tests/utils/disposable_observable.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <snitch/snitch.hpp>

#include <rpp/disposables/composite_disposable.hpp>
#include <rpp/observers/dynamic_observer.hpp>
#include <rpp/sources/create.hpp>

template<typename T>
Expand Down Expand Up @@ -49,16 +50,18 @@ void test_operator_over_observable_with_disposable(auto&& op)
{
SECTION("operator disposes disposable")
{
auto observable_disposable = rpp::composite_disposable_wrapper::make();
{
auto observable = observable_with_disposable<T>(observable_disposable);

auto observer_disposable = rpp::composite_disposable_wrapper::make();
op(observable) | rpp::ops::subscribe(observer_disposable, [](const auto&) {});

observer_disposable.dispose();
}
CHECK(observable_disposable.is_disposed() || observable_disposable.lock().use_count() == 2);
auto observable_disposable = rpp::composite_disposable_wrapper::make();
std::optional<rpp::dynamic_observer<T>> saved_observer{};
auto observable = rpp::source::create<T>([&observable_disposable, &saved_observer](auto&& obs) {
obs.set_upstream(observable_disposable);
saved_observer.emplace(std::forward<decltype(obs)>(obs).as_dynamic());
});

auto observer_disposable = rpp::composite_disposable_wrapper::make();
op(observable) | rpp::ops::subscribe(observer_disposable, [](const auto&) {});

observer_disposable.dispose();
CHECK(observable_disposable.is_disposed());
}

SECTION("set_upstream with fixed_disposable_strategy_selector<1>")
Expand Down

1 comment on commit 09b74b8

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 299.85 ns 2.16 ns 2.16 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 309.44 ns 2.16 ns 2.28 ns 0.95

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 701.39 ns 0.62 ns 0.90 ns 0.69
from array of 1 - create + subscribe + current_thread 1051.02 ns 5.25 ns 7.29 ns 0.72
concat_as_source of just(1 immediate) create + subscribe 2263.58 ns 121.85 ns 113.32 ns 1.08
defer from array of 1 - defer + create + subscribe + immediate 735.45 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2127.27 ns 58.01 ns 58.05 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2987.67 ns 32.11 ns 32.16 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1095.17 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 848.40 ns 0.32 ns 0.31 ns 1.04
immediate_just(1,2)+skip(1)+subscribe 1006.24 ns 0.32 ns 0.31 ns 1.03
immediate_just(1,1,2)+distinct_until_changed()+subscribe 898.05 ns 0.32 ns 0.31 ns 1.02
immediate_just(1,2)+first()+subscribe 1308.22 ns 0.32 ns 0.31 ns 1.03
immediate_just(1,2)+last()+subscribe 981.86 ns 0.32 ns 0.31 ns 1.02
immediate_just+take_last(1)+subscribe 1453.18 ns 18.52 ns 17.91 ns 1.03

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 267.63 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 363.98 ns 7.41 ns 7.46 ns 0.99
current_thread scheduler create worker + schedule + recursive schedule 820.00 ns 65.58 ns 64.60 ns 1.02

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 838.43 ns 0.31 ns 0.31 ns 0.99
immediate_just+scan(10, std::plus)+subscribe 930.59 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2346.13 ns 176.43 ns 161.70 ns 1.09
immediate_just+buffer(2)+subscribe 1526.08 ns 13.89 ns 24.29 ns 0.57
immediate_just+window(2)+subscribe + subscsribe inner 2328.07 ns 1202.84 ns 1094.52 ns 1.10

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 830.17 ns - - 0.00
immediate_just+take_while(true)+subscribe 853.66 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2061.21 ns 0.32 ns 0.31 ns 1.03

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3455.30 ns 199.58 ns 175.57 ns 1.14
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3632.67 ns 171.54 ns 167.30 ns 1.03
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 134.21 ns 132.02 ns 1.02
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3572.01 ns 966.65 ns 985.66 ns 0.98
immediate_just(1) + zip(immediate_just(2)) + subscribe 2126.30 ns 212.65 ns 207.42 ns 1.03

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.74 ns 11.80 ns 11.71 ns 1.01

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2265.04 ns 16.66 ns 16.35 ns 1.02
basic sample with immediate scheduler 1313.43 ns 7.71 ns 5.55 ns 1.39

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 934.98 ns 0.31 ns 0.31 ns 1.01

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 986.25 ns 3.98 ns 6.43 ns 0.62
Subscribe empty callbacks to empty observable via pipe operator 987.24 ns 3.86 ns 6.15 ns 0.63

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1956.73 ns 0.23 ns 0.27 ns 0.86
from array of 1 - create + subscribe + current_thread 2467.56 ns 25.15 ns 32.06 ns 0.78
concat_as_source of just(1 immediate) create + subscribe 5456.77 ns 331.76 ns 452.25 ns 0.73
defer from array of 1 - defer + create + subscribe + immediate 2011.30 ns 0.23 ns 0.32 ns 0.72
interval - interval + take(3) + subscribe + immediate 4996.77 ns 114.71 ns 160.62 ns 0.71
interval - interval + take(3) + subscribe + current_thread 6114.67 ns 110.75 ns 151.85 ns 0.73

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 2858.97 ns 0.23 ns 0.26 ns 0.89
immediate_just+filter(true)+subscribe 2121.75 ns 0.23 ns 0.28 ns 0.84
immediate_just(1,2)+skip(1)+subscribe 2786.94 ns 0.23 ns 0.31 ns 0.76
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2102.95 ns 0.47 ns 0.63 ns 0.74
immediate_just(1,2)+first()+subscribe 3233.96 ns 0.23 ns 0.30 ns 0.77
immediate_just(1,2)+last()+subscribe 2415.02 ns 0.24 ns 0.31 ns 0.77
immediate_just+take_last(1)+subscribe 3024.89 ns 68.97 ns 78.71 ns 0.88

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 871.49 ns 4.07 ns 5.28 ns 0.77
current_thread scheduler create worker + schedule 1210.75 ns 36.38 ns 45.45 ns 0.80
current_thread scheduler create worker + schedule + recursive schedule 2024.26 ns 228.08 ns 288.53 ns 0.79

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2125.33 ns 0.23 ns 0.27 ns 0.85
immediate_just+scan(10, std::plus)+subscribe 2342.94 ns 0.47 ns 0.65 ns 0.72
immediate_just+flat_map(immediate_just(v*2))+subscribe 5278.85 ns 416.36 ns 594.91 ns 0.70
immediate_just+buffer(2)+subscribe 2498.00 ns 69.12 ns 86.45 ns 0.80
immediate_just+window(2)+subscribe + subscsribe inner 5355.82 ns 2314.40 ns 3045.35 ns 0.76

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2112.94 ns - - 0.00
immediate_just+take_while(true)+subscribe 2124.24 ns 0.23 ns 0.30 ns 0.77

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 4941.25 ns 0.23 ns 0.31 ns 0.75

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 7492.85 ns 455.27 ns 609.25 ns 0.75
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 8464.83 ns 451.55 ns 569.18 ns 0.79
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 478.95 ns 589.84 ns 0.81
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 8010.97 ns 1958.72 ns 2450.32 ns 0.80
immediate_just(1) + zip(immediate_just(2)) + subscribe 5186.48 ns 865.26 ns 1230.55 ns 0.70

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 76.84 ns 62.34 ns 64.60 ns 0.97

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 2840.85 ns 107.65 ns 149.68 ns 0.72
basic sample with immediate scheduler 2816.41 ns 17.66 ns 20.47 ns 0.86

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2388.64 ns 0.23 ns 0.31 ns 0.76

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 271.78 ns 1.54 ns 0.88 ns 1.76
Subscribe empty callbacks to empty observable via pipe operator 292.20 ns 1.54 ns 0.88 ns 1.76

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 568.21 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 796.45 ns 5.56 ns 5.56 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1936.98 ns 112.64 ns 113.41 ns 0.99
defer from array of 1 - defer + create + subscribe + immediate 596.08 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1526.77 ns 57.09 ns 57.07 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2117.66 ns 30.88 ns 30.88 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 932.38 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 653.97 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 885.76 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 692.75 ns 0.62 ns 0.62 ns 1.00
immediate_just(1,2)+first()+subscribe 1082.64 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 766.10 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 988.66 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 202.30 ns 1.54 ns 0.88 ns 1.76
current_thread scheduler create worker + schedule 303.99 ns 5.57 ns 5.58 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 632.93 ns 59.24 ns 59.98 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 685.42 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 718.99 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1811.02 ns 119.57 ns 119.39 ns 1.00
immediate_just+buffer(2)+subscribe 1347.28 ns 13.59 ns 14.51 ns 0.94
immediate_just+window(2)+subscribe + subscsribe inner 2114.92 ns 821.11 ns 820.75 ns 1.00

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 668.18 ns - - 0.00
immediate_just+take_while(true)+subscribe 653.65 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1620.80 ns 0.31 ns 0.31 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 2549.17 ns 124.74 ns 125.49 ns 0.99
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3037.61 ns 121.56 ns 121.88 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 114.38 ns 112.34 ns 1.02
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2655.67 ns 732.53 ns 737.12 ns 0.99
immediate_just(1) + zip(immediate_just(2)) + subscribe 1806.99 ns 170.41 ns 169.79 ns 1.00

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 23.10 ns 14.83 ns 14.81 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1028.23 ns 13.28 ns 13.28 ns 1.00
basic sample with immediate scheduler 1024.15 ns 5.86 ns 5.86 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 747.31 ns 0.31 ns 0.31 ns 1.00

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 583.70 ns 4.01 ns 4.01 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 593.36 ns 4.01 ns 4.01 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1169.52 ns 5.24 ns 5.24 ns 1.00
from array of 1 - create + subscribe + current_thread 1437.66 ns 20.42 ns 20.38 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 4735.65 ns 182.41 ns 317.59 ns 0.57
defer from array of 1 - defer + create + subscribe + immediate 1213.79 ns 5.24 ns 5.24 ns 1.00
interval - interval + take(3) + subscribe + immediate 2975.52 ns 130.65 ns 143.11 ns 0.91
interval - interval + take(3) + subscribe + current_thread 3475.51 ns 60.75 ns 60.79 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1861.71 ns 12.87 ns 12.88 ns 1.00
immediate_just+filter(true)+subscribe 1710.85 ns 12.37 ns 12.38 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1766.90 ns 13.01 ns 13.07 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1359.27 ns 15.94 ns 15.95 ns 1.00
immediate_just(1,2)+first()+subscribe 2086.86 ns 12.96 ns 12.98 ns 1.00
immediate_just(1,2)+last()+subscribe 1482.75 ns 14.13 ns 14.14 ns 1.00
immediate_just+take_last(1)+subscribe 2086.19 ns 61.51 ns 61.53 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 490.65 ns 7.34 ns 7.30 ns 1.01
current_thread scheduler create worker + schedule 669.77 ns 17.70 ns 17.90 ns 0.99
current_thread scheduler create worker + schedule + recursive schedule 1118.11 ns 112.46 ns 111.82 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1328.78 ns 12.25 ns 12.22 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1436.03 ns 21.58 ns 21.58 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 3925.00 ns 231.77 ns 225.12 ns 1.03
immediate_just+buffer(2)+subscribe 2360.87 ns 58.12 ns 59.33 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 4109.93 ns 1551.66 ns 1549.02 ns 1.00

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1326.31 ns 11.46 ns 11.45 ns 1.00
immediate_just+take_while(true)+subscribe 1347.81 ns 12.37 ns 12.38 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3849.16 ns 7.71 ns 7.71 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5253.62 ns 237.30 ns 261.48 ns 0.91
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6531.37 ns 232.16 ns 258.76 ns 0.90
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 229.05 ns 223.77 ns 1.02
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6263.79 ns 980.56 ns 979.51 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 3930.92 ns 541.84 ns 548.94 ns 0.99

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 37.14 ns 26.59 ns 27.13 ns 0.98

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1890.19 ns 59.16 ns 59.51 ns 0.99
basic sample with immediate scheduler 1866.79 ns 39.17 ns 39.20 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1465.55 ns 19.96 ns 19.98 ns 1.00

Please sign in to comment.