test: forcibly save data on pinicking

Signed-off-by: Benjamin Wang <wachao@vmware.com>
This commit is contained in:
Benjamin Wang 2023-04-27 14:53:18 +08:00
parent 6d11f8ceb5
commit c7d81acaf0
2 changed files with 9 additions and 3 deletions

View File

@ -211,8 +211,12 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, config e2
}
defer r.clus.Close()
// t.Failed() returns false during panicking. We need to forcibly
// save data on panicking.
// Refer to: https://github.com/golang/go/issues/49929
panicked := true
defer func() {
r.Report(t)
r.Report(t, panicked)
}()
r.operations, r.responses = runScenario(ctx, t, lg, r.clus, *traffic, failpoint)
forcestopCluster(r.clus)
@ -225,6 +229,8 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, config e2
r.patchedOperations = patchOperationBasedOnWatchEvents(r.operations, longestHistory(r.events))
r.visualizeHistory = model.ValidateOperationHistoryAndReturnVisualize(t, lg, r.patchedOperations)
panicked = false
}
func runScenario(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2e.EtcdProcessCluster, traffic trafficConfig, failpoint FailpointConfig) (operations []porcupine.Operation, responses [][]watchResponse) {

View File

@ -61,9 +61,9 @@ func testResultsDirectory(t *testing.T) string {
return path
}
func (r *report) Report(t *testing.T) {
func (r *report) Report(t *testing.T, force bool) {
path := testResultsDirectory(t)
if t.Failed() {
if t.Failed() || force {
for i, member := range r.clus.Procs {
memberDataDir := filepath.Join(path, member.Config().Name)
persistMemberDataDir(t, r.lg, member, memberDataDir)