Android-cuttlefish cvd tool
Namespaces | Classes | Typedefs | Functions | Variables
cuttlefish::selector Namespace Reference

Namespaces

namespace  anonymous_namespace{creation_analyzer.cpp}
 
namespace  anonymous_namespace{creation_analyzer_helper.cpp}
 
namespace  anonymous_namespace{creation_analyzer_test.cpp}
 
namespace  anonymous_namespace{instance_database_helper.cpp}
 
namespace  anonymous_namespace{selector.cpp}
 
namespace  anonymous_namespace{selector_common_parser.cpp}
 

Classes

struct  CreationAnalyzerParam
 
class  CreationInfoGenTest
 
class  CvdInstanceDatabaseTest
 
struct  Expected
 
struct  GroupCreationInfo
 
class  HomeTest
 
class  HostArtifactsTest
 
struct  InputOutput
 
class  InvalidSubCmdTest
 
class  LocalInstanceGroupUnitTest
 
class  NumInstancesParser
 
class  NumInstancesParserTest
 
struct  NumInstancesParserTestParam
 
struct  OutputInfo
 
class  SelectorFlags
 
struct  SelectorOptions
 
class  ValidSubCmdTest
 

Typedefs

using CvdInstanceDatabaseJsonTest = CvdInstanceDatabaseTest
 

Functions

Result< GroupCreationInfoAnalyzeCreation (const CreationAnalyzerParam &params)
 
 TEST_P (HomeTest, HomeTest)
 
 INSTANTIATE_TEST_SUITE_P (CvdCreationInfo, HomeTest, home_test_inputs)
 
 TEST_P (HostArtifactsTest, HostArtifactsTest)
 
 INSTANTIATE_TEST_SUITE_P (CvdCreationInfo, HostArtifactsTest, host_out_test_inputs)
 
 TEST_P (InvalidSubCmdTest, InvalidSubCmdTest)
 
 INSTANTIATE_TEST_SUITE_P (CvdCreationInfo, InvalidSubCmdTest, invalid_sub_cmd_test_inputs)
 
 TEST_P (ValidSubCmdTest, ValidSubCmdTest)
 
 INSTANTIATE_TEST_SUITE_P (CvdCreationInfo, ValidSubCmdTest, valid_sub_cmd_test_inputs)
 
 TEST (AutoHomeTest, DefaultFailAtSecondTrialTest)
 
 TEST (AutoHomeTest, DefaultFollowedByNonDefaultTest)
 
 TEST_P (NumInstancesParserTest, ParseFlags)
 
 INSTANTIATE_TEST_SUITE_P (ParseNumInstances, NumInstancesParserTest, testing::Values(NumInstancesParserTestParam().WithArgs({}).ExpectNum(1), NumInstancesParserTestParam() .WithArgs({"--num_instances", "2"}) .ExpectNum(2)))
 
 INSTANTIATE_TEST_SUITE_P (ParseInstanceNums, NumInstancesParserTest, testing::Values(NumInstancesParserTestParam() .WithArgs({"--instance_nums", "2"}) .ExpectIds({2}), NumInstancesParserTestParam() .WithArgs({"--instance_nums", "2,5,6"}) .ExpectIds({2, 5, 6})))
 
 INSTANTIATE_TEST_SUITE_P (ParseInstanceName, NumInstancesParserTest, testing::Values(NumInstancesParserTestParam() .WithNames({"c-1", "c-3", "c-5"}) .ExpectNum(3)))
 
 INSTANTIATE_TEST_SUITE_P (ParseCombined, NumInstancesParserTest, testing::Values(NumInstancesParserTestParam() .WithArgs({"--instance_nums", "2,5,7", "--num_instances", "3"}) .ExpectIds({2, 5, 7}), NumInstancesParserTestParam() .WithNames({"c-1", "c-2", "c-3"}) .WithArgs({"--instance_nums", "2,3,5", "--num_instances", "3"}) .ExpectIds({2, 3, 5})))
 
 INSTANTIATE_TEST_SUITE_P (ParseBaseInstanceNum, NumInstancesParserTest, testing::Values(NumInstancesParserTestParam() .WithArgs({"--base_instance_num", "6"}) .ExpectIds({6}), NumInstancesParserTestParam() .WithArgs({"--base_instance_num", "5", "--num_instances", "3"}) .ExpectIds({5, 6, 7}), NumInstancesParserTestParam() .WithNames({"c-1", "c-2", "c-3"}) .WithArgs({"--base_instance_num", "4"}) .ExpectIds({4, 5, 6})))
 
 INSTANTIATE_TEST_SUITE_P (ParseInvalid, NumInstancesParserTest, testing::Values(NumInstancesParserTestParam() .WithArgs({"--base_instance_num", "6", "--instance_nums", "6,7"}) .ExpectFailure(), NumInstancesParserTestParam() .WithArgs({"--instance_nums", "5", "--num_instances", "3"}) .ExpectFailure(), NumInstancesParserTestParam() .WithNames({"c-1", "c-2", "c-3"}) .WithArgs({"--num_instances", "4"}) .ExpectFailure(), NumInstancesParserTestParam() .WithNames({"c-1", "c-2", "c-3"}) .WithArgs({"--instance_nums", "4,8"}) .ExpectFailure()))
 
InstanceDatabase::Filter BuildFilterFromSelectors (const SelectorOptions &selectors)
 
Result< LocalInstanceGroupSelectGroup (const InstanceManager &instance_manager, const CommandRequest &request)
 
Result< std::pair< LocalInstance, LocalInstanceGroup > > SelectInstance (const InstanceManager &instance_manager, const CommandRequest &request)
 
Result< std::vector< std::pair< LocalInstanceGroup, std::vector< LocalInstance > > > > SelectInstances (const InstanceManager &instance_manager, const CommandRequest &request)
 
std::vector< FlagBuildCommonSelectorFlags (SelectorOptions &opts)
 
LocalInstanceGroup::Builder GroupParamWithInstances (const std::string &name, const std::string &home_dir, const std::string &host_path, const std::vector< std::optional< std::string > > &product_paths, const std::vector< std::pair< unsigned, std::string > > &instances)
 
 TEST_F (CvdInstanceDatabaseTest, Empty)
 
 TEST_F (CvdInstanceDatabaseTest, AddWithInvalidGroupInfo)
 
 TEST_F (CvdInstanceDatabaseTest, AddWithValidGroupInfo)
 
 TEST_F (CvdInstanceDatabaseTest, AddToTakenHome)
 
 TEST_F (CvdInstanceDatabaseTest, Clear)
 
 TEST_F (CvdInstanceDatabaseTest, SearchGroups)
 
 TEST_F (CvdInstanceDatabaseTest, RemoveGroup)
 
 TEST_F (CvdInstanceDatabaseTest, AddInstances)
 
 TEST_F (CvdInstanceDatabaseTest, AddInstancesInvalid)
 
 TEST_F (CvdInstanceDatabaseTest, FindByInstanceId)
 
 TEST_F (CvdInstanceDatabaseTest, FindByPerInstanceName)
 
 TEST_F (CvdInstanceDatabaseTest, FindGroupByPerInstanceName)
 
 TEST_F (CvdInstanceDatabaseTest, AddInstancesTogether)
 
 TEST_F (CvdInstanceDatabaseTest, UpdateInstances)
 
static std::string GroupName ()
 
 TEST_F (LocalInstanceGroupUnitTest, AddInstancesAndListAll)
 
 TEST_F (LocalInstanceGroupUnitTest, SearchById)
 
 TEST (LocalinstanceTest, Fields)
 

Variables

static auto home_test_inputs
 
static auto host_out_test_inputs
 
static auto invalid_sub_cmd_test_inputs
 
static auto & valid_sub_cmd_test_inputs = home_test_inputs
 
constexpr char kGroupNameField [] = "group_name"
 
constexpr char kHomeField [] = "home"
 
constexpr char kInstanceIdField [] = "instance_id"
 
constexpr char kInstanceNameField [] = "instance_name"
 

Typedef Documentation

◆ CvdInstanceDatabaseJsonTest

Function Documentation

◆ AnalyzeCreation()

Result< GroupCreationInfo > cuttlefish::selector::AnalyzeCreation ( const CreationAnalyzerParam )

Instance IDs: Use the InstanceNumCalculator's logic

HOME directory: If given in envs and is different from the system-wide home, use it If not, try ParentOfAutogeneratedHomes()/uid/${group_name}

host_artifacts_path: ANDROID_HOST_OUT must be given.

Group name: if a group name is not given, automatically generate: default_prefix + "_" + one_of_ids

Per-instance name: When not given, use std::string(id) as the per instance name of each

Number of instances: Controlled by –instance_nums, –num_instances, etc. Also controlled by –instance_name

p.s. dependency: (a-->b means b depends on a) group_name --> HOME instance ids --> per_instance_name

◆ BuildCommonSelectorFlags()

std::vector< Flag > cuttlefish::selector::BuildCommonSelectorFlags ( SelectorOptions opts)

◆ BuildFilterFromSelectors()

InstanceDatabase::Filter cuttlefish::selector::BuildFilterFromSelectors ( const SelectorOptions selectors)

◆ GroupName()

static std::string cuttlefish::selector::GroupName ( )
static

◆ GroupParamWithInstances()

LocalInstanceGroup::Builder cuttlefish::selector::GroupParamWithInstances ( const std::string &  name,
const std::string &  home_dir,
const std::string &  host_path,
const std::vector< std::optional< std::string > > &  product_paths,
const std::vector< std::pair< unsigned, std::string > > &  instances 
)

◆ INSTANTIATE_TEST_SUITE_P() [1/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( CvdCreationInfo  ,
HomeTest  ,
home_test_inputs   
)

◆ INSTANTIATE_TEST_SUITE_P() [2/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( CvdCreationInfo  ,
HostArtifactsTest  ,
host_out_test_inputs   
)

◆ INSTANTIATE_TEST_SUITE_P() [3/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( CvdCreationInfo  ,
InvalidSubCmdTest  ,
invalid_sub_cmd_test_inputs   
)

◆ INSTANTIATE_TEST_SUITE_P() [4/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( CvdCreationInfo  ,
ValidSubCmdTest  ,
valid_sub_cmd_test_inputs   
)

◆ INSTANTIATE_TEST_SUITE_P() [5/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( ParseBaseInstanceNum  ,
NumInstancesParserTest  ,
testing::Values(NumInstancesParserTestParam() .WithArgs({"--base_instance_num", "6"}) .ExpectIds({6}), NumInstancesParserTestParam() .WithArgs({"--base_instance_num", "5", "--num_instances", "3"}) .ExpectIds({5, 6, 7}), NumInstancesParserTestParam() .WithNames({"c-1", "c-2", "c-3"}) .WithArgs({"--base_instance_num", "4"}) .ExpectIds({4, 5, 6}))   
)

◆ INSTANTIATE_TEST_SUITE_P() [6/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( ParseCombined  ,
NumInstancesParserTest  ,
testing::Values(NumInstancesParserTestParam() .WithArgs({"--instance_nums", "2,5,7", "--num_instances", "3"}) .ExpectIds({2, 5, 7}), NumInstancesParserTestParam() .WithNames({"c-1", "c-2", "c-3"}) .WithArgs({"--instance_nums", "2,3,5", "--num_instances", "3"}) .ExpectIds({2, 3, 5}))   
)

◆ INSTANTIATE_TEST_SUITE_P() [7/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( ParseInstanceName  ,
NumInstancesParserTest  ,
testing::Values(NumInstancesParserTestParam() .WithNames({"c-1", "c-3", "c-5"}) .ExpectNum(3))   
)

◆ INSTANTIATE_TEST_SUITE_P() [8/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( ParseInstanceNums  ,
NumInstancesParserTest  ,
testing::Values(NumInstancesParserTestParam() .WithArgs({"--instance_nums", "2"}) .ExpectIds({2}), NumInstancesParserTestParam() .WithArgs({"--instance_nums", "2,5,6"}) .ExpectIds({2, 5, 6}))   
)

◆ INSTANTIATE_TEST_SUITE_P() [9/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( ParseInvalid  ,
NumInstancesParserTest  ,
testing::Values(NumInstancesParserTestParam() .WithArgs({"--base_instance_num", "6", "--instance_nums", "6,7"}) .ExpectFailure(), NumInstancesParserTestParam() .WithArgs({"--instance_nums", "5", "--num_instances", "3"}) .ExpectFailure(), NumInstancesParserTestParam() .WithNames({"c-1", "c-2", "c-3"}) .WithArgs({"--num_instances", "4"}) .ExpectFailure(), NumInstancesParserTestParam() .WithNames({"c-1", "c-2", "c-3"}) .WithArgs({"--instance_nums", "4,8"}) .ExpectFailure())   
)

◆ INSTANTIATE_TEST_SUITE_P() [10/10]

cuttlefish::selector::INSTANTIATE_TEST_SUITE_P ( ParseNumInstances  ,
NumInstancesParserTest  ,
testing::Values(NumInstancesParserTestParam().WithArgs({}).ExpectNum(1), NumInstancesParserTestParam() .WithArgs({"--num_instances", "2"}) .ExpectNum(2))   
)

◆ SelectGroup()

Result< LocalInstanceGroup > cuttlefish::selector::SelectGroup ( const InstanceManager instance_manager,
const CommandRequest request 
)

◆ SelectInstance()

Result< std::pair< LocalInstance, LocalInstanceGroup > > cuttlefish::selector::SelectInstance ( const InstanceManager instance_manager,
const CommandRequest request 
)

◆ SelectInstances()

Result< std::vector< std::pair< LocalInstanceGroup, std::vector< LocalInstance > > > > cuttlefish::selector::SelectInstances ( const InstanceManager instance_manager,
const CommandRequest request 
)

◆ TEST() [1/3]

cuttlefish::selector::TEST ( AutoHomeTest  ,
DefaultFailAtSecondTrialTest   
)

◆ TEST() [2/3]

cuttlefish::selector::TEST ( AutoHomeTest  ,
DefaultFollowedByNonDefaultTest   
)

◆ TEST() [3/3]

cuttlefish::selector::TEST ( LocalinstanceTest  ,
Fields   
)

Note that invalid inputs must be tested at the InstanceDatabase level

◆ TEST_F() [1/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
AddInstances   
)

◆ TEST_F() [2/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
AddInstancesInvalid   
)

◆ TEST_F() [3/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
AddInstancesTogether   
)

◆ TEST_F() [4/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
AddToTakenHome   
)

◆ TEST_F() [5/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
AddWithInvalidGroupInfo   
)

◆ TEST_F() [6/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
AddWithValidGroupInfo   
)

◆ TEST_F() [7/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
Clear   
)

◆ TEST_F() [8/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
Empty   
)

◆ TEST_F() [9/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
FindByInstanceId   
)

◆ TEST_F() [10/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
FindByPerInstanceName   
)

◆ TEST_F() [11/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
FindGroupByPerInstanceName   
)

◆ TEST_F() [12/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
RemoveGroup   
)

◆ TEST_F() [13/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
SearchGroups   
)

◆ TEST_F() [14/16]

cuttlefish::selector::TEST_F ( CvdInstanceDatabaseTest  ,
UpdateInstances   
)

◆ TEST_F() [15/16]

cuttlefish::selector::TEST_F ( LocalInstanceGroupUnitTest  ,
AddInstancesAndListAll   
)

◆ TEST_F() [16/16]

cuttlefish::selector::TEST_F ( LocalInstanceGroupUnitTest  ,
SearchById   
)

◆ TEST_P() [1/5]

cuttlefish::selector::TEST_P ( HomeTest  ,
HomeTest   
)

◆ TEST_P() [2/5]

cuttlefish::selector::TEST_P ( HostArtifactsTest  ,
HostArtifactsTest   
)

◆ TEST_P() [3/5]

cuttlefish::selector::TEST_P ( InvalidSubCmdTest  ,
InvalidSubCmdTest   
)

◆ TEST_P() [4/5]

cuttlefish::selector::TEST_P ( NumInstancesParserTest  ,
ParseFlags   
)

◆ TEST_P() [5/5]

cuttlefish::selector::TEST_P ( ValidSubCmdTest  ,
ValidSubCmdTest   
)

Variable Documentation

◆ home_test_inputs

auto cuttlefish::selector::home_test_inputs
static
Initial value:
= testing::Values(
InputOutput{
.cmd_args = "cvd start --daemon",
.selector_args = "--group_name=cf --instance_name=1",
.android_host_out = "/home/user/download",
.home = "/usr/local/home/_fake_user",
.expected_output =
Expected{.output = OutputInfo{.home = "/usr/local/home/_fake_user",
.host_artifacts_path =
"/home/user/download"},
.is_success = true}},
InputOutput{.cmd_args = "cvd start --daemon",
.android_host_out = "/home/user/download",
.home = TestUserHome(),
.expected_output =
Expected{.output = OutputInfo{.home = TestUserHome(),
.host_artifacts_path =
"/home/user/download"},
.is_success = true}},
InputOutput{
.cmd_args = "cvd start --daemon",
.android_host_out = "/home/user/download",
.expected_output = Expected{
.output = OutputInfo{.home = TestUserHome(),
.host_artifacts_path = "/home/user/download"},
.is_success = true}})
std::string TestUserHome()
Definition: creation_analyzer_test.cpp:29

◆ host_out_test_inputs

auto cuttlefish::selector::host_out_test_inputs
static
Initial value:
= testing::Values(
InputOutput{.cmd_args = "cvd start --daemon",
.selector_args = "--group_name=cf --instance_name=1",
.android_host_out = "/home/user/download",
.home = "/home/fake_user",
.expected_output =
Expected{.output = OutputInfo{.home = "/home/fake_user",
.host_artifacts_path =
"/home/user/download"},
.is_success = true}},
InputOutput{.cmd_args = "cvd start --daemon",
.selector_args = "--group_name=cf --instance_name=1",
.home = "/home/fake_user",
.expected_output =
Expected{.output = OutputInfo{.home = "/home/fake_user"},
.is_success = false}})

◆ invalid_sub_cmd_test_inputs

auto cuttlefish::selector::invalid_sub_cmd_test_inputs
static
Initial value:
=
testing::Values(InputOutput{.cmd_args = "cvd stop --daemon",
.android_host_out = "/home/user/download",
.home = "/home/fake_user"},
.android_host_out = "/home/user/download",
.home = "/home/fake_user"},
InputOutput{.cmd_args = "cvd help --daemon",
.android_host_out = "/home/user/download",
.home = "/home/fake_user"})
Definition: creation_analyzer_helper.h:46
std::string cmd_args
Definition: creation_analyzer_helper.h:49

◆ kGroupNameField

constexpr char cuttlefish::selector::kGroupNameField[] = "group_name"
constexpr

◆ kHomeField

constexpr char cuttlefish::selector::kHomeField[] = "home"
constexpr

◆ kInstanceIdField

constexpr char cuttlefish::selector::kInstanceIdField[] = "instance_id"
constexpr

◆ kInstanceNameField

constexpr char cuttlefish::selector::kInstanceNameField[] = "instance_name"
constexpr

◆ valid_sub_cmd_test_inputs

auto& cuttlefish::selector::valid_sub_cmd_test_inputs = home_test_inputs
static