// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This file was auto-generated via go generate.
// DO NOT UPDATE MANUALLY
package test

import "fmt"
import "testing"
import "os"

import "v.io/x/ref/test"
import "v.io/x/ref/test/modules"

func init() {
	modules.RegisterChild("rootMT", ``, rootMT)
	modules.RegisterChild("echoServer", ``, echoServer)
	modules.RegisterChild("echoClient", ``, echoClient)
	modules.RegisterChild("childPing", ``, childPing)
	modules.RegisterChild("proxyServer", ``, proxyServer)
}

func TestMain(m *testing.M) {
	test.Init()
	if modules.IsModulesChildProcess() {
		if err := modules.Dispatch(); err != nil {
			fmt.Fprintf(os.Stderr, "modules.Dispatch failed: %v\n", err)
			os.Exit(1)
		}
		return
	}
	os.Exit(m.Run())
}
