github.com/evdatsion/aphelion-dpos-bft@v0.32.1/libs/fail/fail.go (about)

     1  package fail
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"strconv"
     7  )
     8  
     9  func envSet() int {
    10  	callIndexToFailS := os.Getenv("FAIL_TEST_INDEX")
    11  
    12  	if callIndexToFailS == "" {
    13  		return -1
    14  	} else {
    15  		var err error
    16  		callIndexToFail, err := strconv.Atoi(callIndexToFailS)
    17  		if err != nil {
    18  			return -1
    19  		}
    20  		return callIndexToFail
    21  	}
    22  }
    23  
    24  // Fail when FAIL_TEST_INDEX == callIndex
    25  var callIndex int //indexes Fail calls
    26  
    27  func Fail() {
    28  	callIndexToFail := envSet()
    29  	if callIndexToFail < 0 {
    30  		return
    31  	}
    32  
    33  	if callIndex == callIndexToFail {
    34  		Exit()
    35  	}
    36  
    37  	callIndex += 1
    38  }
    39  
    40  func Exit() {
    41  	fmt.Printf("*** fail-test %d ***\n", callIndex)
    42  	os.Exit(1)
    43  	//	proc, _ := os.FindProcess(os.Getpid())
    44  	//	proc.Signal(os.Interrupt)
    45  	//	panic(fmt.Sprintf("*** fail-test %d ***", callIndex))
    46  }