github.com/1and1/oneandone-cloudserver-sdk-go@v1.4.1/setup_test.go (about)

     1  package oneandone
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"os"
     7  	"sync"
     8  	"testing"
     9  )
    10  
    11  var (
    12  	api         *API
    13  	sync_server sync.Once
    14  	test_server *Server
    15  )
    16  
    17  func Init() {
    18  	fmt.Println("Initializing tests...")
    19  	token, err := getEnvironmentVar("ONEANDONE_TOKEN")
    20  	if err != nil {
    21  		fmt.Printf("The 1&1 cloud server api token must be set in the environment variable 'ONEANDONE_TOKEN'")
    22  		os.Exit(1)
    23  	}
    24  
    25  	SetToken(token)
    26  
    27  	apiEndpoint, err := getEnvironmentVar("ONEANDONE_ENDPOINT")
    28  	if err != nil {
    29  		// Use default endpoint
    30  		apiEndpoint = BaseUrl
    31  	}
    32  
    33  	api = New(token, apiEndpoint)
    34  }
    35  
    36  func getEnvironmentVar(name string) (string, error) {
    37  	osVar := os.Getenv(name)
    38  	if osVar == "" {
    39  		return "", fmt.Errorf("The environment variable '%s' is not set.", name)
    40  	}
    41  	return osVar, nil
    42  }
    43  
    44  func setEnvironmentVar(name string, value string) {
    45  	err := os.Setenv(name, value)
    46  	if err != nil {
    47  		fmt.Printf("The environment variable '%s' is not set.", name)
    48  	}
    49  }
    50  
    51  func printObject(in interface{}) {
    52  	bytes, _ := json.MarshalIndent(in, "", "    ")
    53  	fmt.Printf("%v\n", string(bytes))
    54  }
    55  
    56  func deploy_test_server(power_on bool) {
    57  	_, test_server, _ = create_test_server(power_on)
    58  	if power_on {
    59  		api.WaitForState(test_server, "POWERED_ON", 10, 90)
    60  	} else {
    61  		api.WaitForState(test_server, "POWERED_OFF", 10, 90)
    62  	}
    63  }
    64  
    65  func Cleanup() {
    66  	if server != nil {
    67  		api.DeleteServer(server.Id, false)
    68  	}
    69  	if test_server != nil {
    70  		api.DeleteServer(test_server.Id, false)
    71  	}
    72  	if test_image != nil {
    73  		api.DeleteImage(test_image.Id)
    74  	}
    75  	if test_fp != nil {
    76  		api.DeleteFirewallPolicy(test_fp.Id)
    77  	}
    78  	if test_lb != nil {
    79  		api.DeleteLoadBalancer(test_lb.Id)
    80  	}
    81  	if test_mp != nil {
    82  		api.DeleteMonitoringPolicy(test_mp.Id)
    83  	}
    84  	if test_pn != nil {
    85  		api.DeletePrivateNetwork(test_pn.Id)
    86  	}
    87  	if test_ip != nil {
    88  		api.DeletePublicIp(test_ip.Id)
    89  	}
    90  	if test_ss != nil {
    91  		api.DeleteSharedStorage(test_ss.Id)
    92  	}
    93  	if ser_lb != nil {
    94  		api.DeleteLoadBalancer(ser_lb.Id)
    95  	}
    96  	if image_serv != nil {
    97  		api.DeleteServer(image_serv.Id, false)
    98  	}
    99  	if test_vpn != nil {
   100  		api.DeleteVPN(test_vpn.Id)
   101  	}
   102  	if test_role != nil {
   103  		api.DeleteRole(test_role.Id)
   104  	}
   105  }
   106  
   107  func TestMain(m *testing.M) {
   108  	Init()
   109  	rc := m.Run()
   110  	Cleanup()
   111  	os.Exit(rc)
   112  }