]> git.proxmox.com Git - ceph.git/blame - ceph/src/seastar/tests/unit/pipe_test.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / seastar / tests / unit / pipe_test.cc
CommitLineData
20effc67
TL
1/*
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.
6 *
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
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
16 * under the License.
17 */
18
19/*
20 * Copyright 2021-present ScyllaDB
21 */
22
23#include <seastar/testing/test_case.hh>
24#include <seastar/testing/thread_test_case.hh>
25
26#include <seastar/core/pipe.hh>
27
28using namespace seastar;
29
30static_assert(!std::is_default_constructible_v<seastar::pipe_reader<int>>);
31static_assert(!std::is_default_constructible_v<seastar::pipe_writer<int>>);
32
33static_assert(std::is_nothrow_move_constructible_v<seastar::pipe_reader<int>>);
34static_assert(std::is_nothrow_move_assignable_v<seastar::pipe_reader<int>>);
35
36static_assert(std::is_nothrow_move_constructible_v<seastar::pipe_writer<int>>);
37static_assert(std::is_nothrow_move_assignable_v<seastar::pipe_writer<int>>);
38
39SEASTAR_THREAD_TEST_CASE(simple_pipe_test) {
40 seastar::pipe<int> p(1);
41
42 auto f0 = p.reader.read();
43 BOOST_CHECK(!f0.available());
44 p.writer.write(17).get();
45 BOOST_REQUIRE_EQUAL(*f0.get0(), 17);
46
47 p.writer.write(42).get();
48 auto f2 = p.reader.read();
49 BOOST_CHECK(f2.available());
50 BOOST_REQUIRE_EQUAL(*f2.get0(), 42);
51}