blob: d15d217259b79e7a45917e24133b161ece09f44a [file] [log] [blame]
package analyzer
import (
"testing"
cpb "go.skia.org/infra/cabe/go/proto"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
"google.golang.org/protobuf/testing/protocmp"
"go.chromium.org/luci/common/api/swarming/swarming/v1"
"github.com/stretchr/testify/assert"
)
func TestDiagnostics_AnalysisDiagnostics(t *testing.T) {
d := newDiagnostics()
d.excludeSwarmingTask(&swarming.SwarmingRpcsTaskRequestMetadata{
TaskId: "task-id-0",
}, "missing data")
d.excludeSwarmingTask(&swarming.SwarmingRpcsTaskRequestMetadata{
TaskId: "task-id-0",
}, "an extra reason to exclude this same task")
d.includeSwarmingTask(&swarming.SwarmingRpcsTaskRequestMetadata{
TaskId: "task-id-1",
})
d.includeSwarmingTask(&swarming.SwarmingRpcsTaskRequestMetadata{
TaskId: "task-id-3",
})
d.includeSwarmingTask(&swarming.SwarmingRpcsTaskRequestMetadata{
TaskId: "task-id-4",
})
d.excludeReplica(7, pairedTasks{
control: &armTask{
taskID: "task-id-0",
},
treatment: &armTask{
taskID: "task-id-1",
},
}, "bad data in one or both tasks")
d.excludeReplica(7, pairedTasks{
control: &armTask{
taskID: "task-id-0",
},
treatment: &armTask{
taskID: "task-id-1",
},
}, "an extra reason to exclude this same replica")
d.includeReplica(1, pairedTasks{
control: &armTask{
taskID: "task-id-2",
},
treatment: &armTask{
taskID: "task-id-3",
},
})
ad := d.AnalysisDiagnostics()
assert.NotNil(t, ad)
diff := cmp.Diff(&cpb.AnalysisDiagnostics{
ExcludedSwarmingTasks: []*cpb.SwarmingTaskDiagnostics{{
Id: &cpb.SwarmingTaskId{
TaskId: "task-id-0",
},
Message: []string{"missing data", "an extra reason to exclude this same task"},
}},
ExcludedReplicas: []*cpb.ReplicaDiagnostics{{
ReplicaNumber: int32(7),
ControlTask: &cpb.SwarmingTaskId{
TaskId: "task-id-0",
},
TreatmentTask: &cpb.SwarmingTaskId{
TaskId: "task-id-1",
},
Message: []string{"bad data in one or both tasks", "an extra reason to exclude this same replica"},
}},
IncludedSwarmingTasks: []*cpb.SwarmingTaskDiagnostics{
{
Id: &cpb.SwarmingTaskId{
TaskId: "task-id-1",
},
},
{
Id: &cpb.SwarmingTaskId{
TaskId: "task-id-3",
},
},
{
Id: &cpb.SwarmingTaskId{
TaskId: "task-id-4",
},
},
},
IncludedReplicas: []*cpb.ReplicaDiagnostics{{
ReplicaNumber: int32(1),
ControlTask: &cpb.SwarmingTaskId{
TaskId: "task-id-2",
},
TreatmentTask: &cpb.SwarmingTaskId{
TaskId: "task-id-3",
},
}},
},
ad,
cmpopts.EquateEmpty(),
protocmp.Transform(),
)
assert.Equal(t, "", diff)
}