mayadata-io / mayadata-io/cstorpoolauto
logic: use logger instance as a property to go structures
Open
Nobody has claimed this yet.
logger
logic
- Dominant language
- Go
- Stars
- 8
- Forks
- 6
- PR merge metrics
- No merged PRs in 30d
Description
Using logger instance as a property helps in Unit Testing business methods of various structures. Alternatively we have to depend on similar mock logic during UT:
func TestPlannerIsReadyByNodeDiskCount(t *testing.T) {
mockloginfo := &types.CStorClusterPlan{
ObjectMeta: metav1.ObjectMeta{
Name: "test",
Namespace: "test",
},
}
var tests = map[string]struct {
planner *Planner
isReady bool
}{
"desired disk count == observed disk count": {
planner: &Planner{
storageSetToDesiredDiskCount: map[string]resource.Quantity{
"101": resource.MustParse("1"),
},
storageSetToBlockDevices: map[string][]string{
"101": []string{"bd1"},
},
},
isReady: true,
},
"desired disk count > observed disk count": {
planner: &Planner{
// TODO (@amitkumardas):
// Use log as a field in Planner
CStorClusterPlan: mockloginfo,
storageSetToDesiredDiskCount: map[string]resource.Quantity{
"101": resource.MustParse("2"),
},
storageSetToBlockDevices: map[string][]string{
"101": []string{"bd1"},
},
},
isReady: false,
},
"desired disk count < observed disk count": {
planner: &Planner{
storageSetToDesiredDiskCount: map[string]resource.Quantity{
"101": resource.MustParse("2"),
},
storageSetToBlockDevices: map[string][]string{
"101": []string{"bd1", "bd2", "bd3"},
},
},
isReady: true,
},
}
for name, mock := range tests {
name := name
mock := mock
t.Run(name, func(t *testing.T) {
got := mock.planner.isReadyByNodeDiskCount()
if got != mock.isReady {
t.Fatalf("Want %t got %t", mock.isReady, got)
}
})
}
}
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with TestPlannerIsReadyByNodeDiskCount and the Planner.isReadyByNodeDiskCount entry point shown in the issue. Inspect how logging is currently obtained by Planner and related structures; done when the logger is available as a structure property and the test no longer needs the mock CStorClusterPlan workaround.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, kubernetes
- Domain
- testing
- Issue type
- Refactor
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100