blob: ed3b243bafdc51780c8836d8f4aec88851eb0948 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef LIB_SYS_SERVICE_CPP_TEST_BASE_H_
#define LIB_SYS_SERVICE_CPP_TEST_BASE_H_
#include <fcntl.h>
#include <lib/fdio/namespace.h>
#include <stdlib.h>
#include <fbl/unique_fd.h>
#include <gtest/gtest.h>
namespace sys {
namespace testing {
class TestBase : public ::testing::Test {
protected:
fdio_ns_t* ns() const { return ns_; }
int MkDir(std::string dir) {
std::string path = svc_ + dir;
return mkdir(path.data(), 066);
}
int RmDir(std::string dir) {
std::string path = svc_ + dir;
return rmdir(path.data());
}
private:
fdio_ns_t* ns_;
std::string svc_;
void SetUp() override {
zx_status_t status = fdio_ns_create(&ns_);
ASSERT_EQ(ZX_OK, status);
char buf[] = "/tmp/svc.XXXXXX";
svc_ = mkdtemp(buf);
int ret = MkDir("/fuchsia.examples.EchoService");
ASSERT_EQ(0, ret);
ret = MkDir("/fuchsia.examples.EchoService/default");
ASSERT_EQ(0, ret);
ret = MkDir("/fuchsia.examples.EchoService/my_instance");
ASSERT_EQ(0, ret);
fbl::unique_fd fd(open(svc_.data(), O_RDONLY | O_DIRECTORY));
ASSERT_TRUE(fd.is_valid());
status = fdio_ns_bind_fd(ns_, "/svc", fd.get());
ASSERT_EQ(ZX_OK, status);
}
void TearDown() override { fdio_ns_destroy(ns_); }
};
} // namespace testing
} // namespace sys
#endif // LIB_SYS_SERVICE_CPP_TEST_BASE_H_