2 * This file is open source software, licensed to you under the terms
3 * of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4 * distributed with this work for additional information regarding copyright
5 * ownership. You may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing,
12 * software distributed under the License is distributed on an
13 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 * KIND, either express or implied. See the License for the
15 * specific language governing permissions and limitations
19 * Copyright (C) 2018 Scylladb, Ltd.
22 #include <seastar/testing/thread_test_case.hh>
24 #include <seastar/core/sharded.hh>
26 using namespace seastar
;
29 class invoke_on_during_stop final
: public peering_sharded_service
<invoke_on_during_stop
> {
34 return container().invoke_on(0, [] (invoke_on_during_stop
& instance
) {
39 ~invoke_on_during_stop() {
40 if (engine().cpu_id() == 0) {
47 SEASTAR_THREAD_TEST_CASE(invoke_on_during_stop_test
) {
48 sharded
<invoke_on_during_stop
> s
;
57 return make_ready_future
<>();
61 SEASTAR_THREAD_TEST_CASE(invoke_map_returns_non_future_value
) {
62 seastar::sharded
<mydata
> s
;
64 s
.map([] (mydata
& m
) {
66 }).then([] (std::vector
<int> results
) {
67 for (auto& x
: results
) {
74 SEASTAR_THREAD_TEST_CASE(invoke_map_returns_future_value
) {
75 seastar::sharded
<mydata
> s
;
77 s
.map([] (mydata
& m
) {
78 return make_ready_future
<int>(m
.x
);
79 }).then([] (std::vector
<int> results
) {
80 for (auto& x
: results
) {
87 SEASTAR_THREAD_TEST_CASE(invoke_map_returns_future_value_from_thread
) {
88 seastar::sharded
<mydata
> s
;
90 s
.map([] (mydata
& m
) {
91 return seastar::async([&m
] {
94 }).then([] (std::vector
<int> results
) {
95 for (auto& x
: results
) {