blob: 6e5c5c37007e56662cf17c279c831b3609444c35 [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.
#include <lib/zx/job.h>
#include <lib/zx/object.h>
#include <zircon/status.h>
#include <array>
#include <string>
#include <thread>
#include <gtest/gtest.h>
#include "garnet/bin/sshd-host/service.h"
namespace sshd_host {
TEST(SshdHostTest, TestMakeChildJob) {
zx_status_t s;
zx::job parent;
s = zx::job::create(*zx::job::default_job(), 0, &parent);
ASSERT_EQ(s, ZX_OK);
std::array<zx_koid_t, 10> children;
size_t num_children;
s = parent.get_info(ZX_INFO_JOB_CHILDREN, (void*)&children,
sizeof(zx_koid_t) * children.max_size(), &num_children, nullptr);
ASSERT_EQ(s, ZX_OK);
ASSERT_EQ(num_children, (size_t)0);
zx::job job;
ASSERT_EQ(sshd_host::make_child_job(parent, std::string("test job"), &job), ZX_OK);
s = parent.get_info(ZX_INFO_JOB_CHILDREN, (void*)&children, sizeof(zx_koid_t) * children.size(),
&num_children, nullptr);
ASSERT_EQ(s, ZX_OK);
ASSERT_EQ(num_children, (size_t)1);
zx_info_handle_basic_t info = {};
s = job.get_info(ZX_INFO_HANDLE_BASIC, (void*)&info, sizeof(info), nullptr, nullptr);
ASSERT_EQ(s, ZX_OK);
ASSERT_EQ(info.rights, kChildJobRights);
}
} // namespace sshd_host