Add IsRunningWithVFS1 to test util

VFS2 is adding more functionality than VFS1. In order to test
new functionality, it's required to skip some tests with VFS1.
To skip tests, use:

SKIP_IF(IsRunningWithVFS1());

The test will run in Linux and gVisor with VFS2 enabled.

Updates #1035

PiperOrigin-RevId: 312698616
This commit is contained in:
Fabricio Voznika 2020-05-21 10:46:45 -07:00 committed by gVisor bot
parent 7369aaee32
commit 7bde26934a
2 changed files with 13 additions and 2 deletions

View File

@ -42,12 +42,13 @@ namespace testing {
#define TEST_ON_GVISOR "TEST_ON_GVISOR"
#define GVISOR_NETWORK "GVISOR_NETWORK"
#define GVISOR_VFS "GVISOR_VFS"
bool IsRunningOnGvisor() { return GvisorPlatform() != Platform::kNative; }
const std::string GvisorPlatform() {
// Set by runner.go.
char* env = getenv(TEST_ON_GVISOR);
const char* env = getenv(TEST_ON_GVISOR);
if (!env) {
return Platform::kNative;
}
@ -55,10 +56,19 @@ const std::string GvisorPlatform() {
}
bool IsRunningWithHostinet() {
char* env = getenv(GVISOR_NETWORK);
const char* env = getenv(GVISOR_NETWORK);
return env && strcmp(env, "host") == 0;
}
bool IsRunningWithVFS1() {
const char* env = getenv(GVISOR_VFS);
if (env == nullptr) {
// If not set, it's running on Linux.
return false;
}
return strcmp(env, "VFS1") == 0;
}
// Inline cpuid instruction. Preserve %ebx/%rbx register. In PIC compilations
// %ebx contains the address of the global offset table. %rbx is occasionally
// used to address stack variables in presence of dynamic allocas.

View File

@ -220,6 +220,7 @@ constexpr char kKVM[] = "kvm";
bool IsRunningOnGvisor();
const std::string GvisorPlatform();
bool IsRunningWithHostinet();
bool IsRunningWithVFS1();
#ifdef __linux__
void SetupGvisorDeathTest();