mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
1481499fe2
This change adds a layer of abstraction around the internal Docker APIs, and eliminates all direct dependencies on Dockerfiles in the infrastructure. A subsequent change will automated the generation of local images (with efficient caching). Note that this change drops the use of bazel container rules, as that experiment does not seem to be viable. PiperOrigin-RevId: 308095430
61 lines
1.8 KiB
Go
61 lines
1.8 KiB
Go
// Copyright 2019 The gVisor Authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// Package iptables contains a set of iptables tests implemented as TestCases
|
|
package iptables
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"time"
|
|
)
|
|
|
|
// IPExchangePort is the port the container listens on to receive the IP
|
|
// address of the local process.
|
|
const IPExchangePort = 2349
|
|
|
|
// TerminalStatement is the last statement in the test runner.
|
|
const TerminalStatement = "Finished!"
|
|
|
|
// TestTimeout is the timeout used for all tests.
|
|
const TestTimeout = 10 * time.Minute
|
|
|
|
// A TestCase contains one action to run in the container and one to run
|
|
// locally. The actions run concurrently and each must succeed for the test
|
|
// pass.
|
|
type TestCase interface {
|
|
// Name returns the name of the test.
|
|
Name() string
|
|
|
|
// ContainerAction runs inside the container. It receives the IP of the
|
|
// local process.
|
|
ContainerAction(ip net.IP) error
|
|
|
|
// LocalAction runs locally. It receives the IP of the container.
|
|
LocalAction(ip net.IP) error
|
|
}
|
|
|
|
// Tests maps test names to TestCase.
|
|
//
|
|
// New TestCases are added by calling RegisterTestCase in an init function.
|
|
var Tests = map[string]TestCase{}
|
|
|
|
// RegisterTestCase registers tc so it can be run.
|
|
func RegisterTestCase(tc TestCase) {
|
|
if _, ok := Tests[tc.Name()]; ok {
|
|
panic(fmt.Sprintf("TestCase %s already registered.", tc.Name()))
|
|
}
|
|
Tests[tc.Name()] = tc
|
|
}
|