github.com/rochacon/deis@v1.0.2-0.20150903015341-6839b592a1ff/mesos/pkg/confd/confd_test.go (about)

     1  package confd
     2  
     3  import (
     4  	"os"
     5  	"os/exec"
     6  	"syscall"
     7  	"testing"
     8  	"time"
     9  )
    10  
    11  const (
    12  	confdError = "Apr 29 17:00:54 deis-1 sh: 2015-04-29T15:00:54Z fceb2accfbf5 confd[1484]: ERROR template: builder:59:47: executing \"builder\" at <getv \"/deis/registry...>: error calling getv: key does not exist"
    13  )
    14  
    15  func TestReturnError(t *testing.T) {
    16  	signalChan := make(chan os.Signal, 1)
    17  	args := "while(true);do echo '" + confdError + "'; sleep 1;done"
    18  	cmd := exec.Command("/bin/bash", "-c", args)
    19  
    20  	stdout, err := cmd.StdoutPipe()
    21  	checkError(signalChan, err)
    22  
    23  	cmd.Start()
    24  
    25  	go checkNumberOfErrors(stdout, 1, 2*time.Second, signalChan)
    26  
    27  	for {
    28  		select {
    29  		case <-time.Tick(5 * time.Second):
    30  			return
    31  		case s := <-signalChan:
    32  			log.Debugf("Signal received: %v", s)
    33  			switch s {
    34  			case syscall.SIGKILL:
    35  				// we expect this
    36  				return
    37  			}
    38  		}
    39  	}
    40  }
    41  
    42  func TestReturnWithoutError(t *testing.T) {
    43  	signalChan := make(chan os.Signal, 1)
    44  	args := "while(true);do echo '" + confdError + "'; sleep 1;done"
    45  	cmd := exec.Command("/bin/bash", "-c", args)
    46  
    47  	stdout, err := cmd.StdoutPipe()
    48  	checkError(signalChan, err)
    49  
    50  	cmd.Start()
    51  
    52  	go checkNumberOfErrors(stdout, 2, 2*time.Second, signalChan)
    53  
    54  	for {
    55  		select {
    56  		case <-time.Tick(5 * time.Second):
    57  			return
    58  		case s := <-signalChan:
    59  			log.Debugf("Signal received: %v", s)
    60  			switch s {
    61  			case syscall.SIGKILL:
    62  				t.Fatal("Unexpected error received")
    63  			}
    64  		}
    65  	}
    66  }