text: package integration
  
  import (
  	"os"
  	"runtime"
  	"testing"
  
  	"github.com/Sirupsen/logrus"
  	"github.com/opencontainers/runc/libcontainer"
  	"github.com/opencontainers/runc/libcontainer/cgroups/systemd"
  	_ "github.com/opencontainers/runc/libcontainer/nsenter"
  )
  
  // init runs the libcontainer initialization code because of the busybox style needs
  // to work around the go runtime and the issues with forking
  func init() {
  	if len(os.Args) < 2 || os.Args[1] != "init" {
  		return
  	}
  	runtime.GOMAXPROCS(1)
  	runtime.LockOSThread()
  	factory, err := libcontainer.New("")
  	if err != nil {
  		logrus.Fatalf("unable to initialize for container: %s", err)
  	}
  	if err := factory.StartInitialization(); err != nil {
  		logrus.Fatal(err)
  	}
  }
  
  var (
  	factory        libcontainer.Factory
  	systemdFactory libcontainer.Factory
  )
  
  func TestMain(m *testing.M) {
  	var (
  		err error
  		ret int
  	)
  
  	logrus.SetOutput(os.Stderr)
  	logrus.SetLevel(logrus.InfoLevel)
  
  	factory, err = libcontainer.New("/run/libctTests", libcontainer.Cgroupfs)
  	if err != nil {
  		logrus.Error(err)
  		os.Exit(1)
  	}
  	if systemd.UseSystemd() {
  		systemdFactory, err = libcontainer.New("/run/libctTests", libcontainer.SystemdCgroups)
  		if err != nil {
  			logrus.Error(err)
  			os.Exit(1)
  		}
  	}
  
  	ret = m.Run()
  	os.Exit(ret)
  }
  