Change:
Note: this issue should be viewed in the context of . What would you like to be : When parsing the performance- file, make sure each testCase and workload has a unique name. This can also be implemented by changing the yaml file's structure into maps instead of arrays (as suggested by but this will result in a loss of test/workload order (i.e. a workload may run before a workload). Why is this needed: The name of each testCase and workload is used in the report generated by the framework and should therefore be unique in order to identify each metric. /sig scheduling /sig testing /assign
Issues go stale after 90d of inactivity. Mark the issue as fresh with . Stale issues rot after an additional 30d of inactivity and eventually close. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle stale
/remove-lifecycle stale
Issues go stale after 90d of inactivity. Mark the issue as fresh with . Stale issues rot after an additional 30d of inactivity and eventually close. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle stale
/remove-lifecycle stale
/unassign /good-first-issue
This request has been marked as suitable for new contributors. Please ensure the request meets the requirements listed . If this request no longer meets these requirements, the label can be removed by commenting with the command. <detailsIn response to : /unassign /good-first-issue Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
Hi this is my first time contributing to kubernetes. can you provide me some guidance on how to to get started?
I recommend starting with the and reading from there.
Hi are you suggesting that name of workloads should be different for each test case . eg:-
kinda, but I'm more interested in making sure that each test has a unique name identifier so that I can run it with
Are you working on this?
you can go ahead if you want
I would like to work on this issue if someone has not started already
if no one is currently working on this, I'd like to take a crack at it.
/assign
Of course! Could you explain what you did so noobs like me could learn?
Sure! For the record I am a noob to this project as well, but my process for trying to solve issues on open source projects generally goes like this: Read the issue and figure out what files are going to be relevant. In this case I know the relevant file is going to be in test/integration/schedulerperf because of the issue title and I know a performance- file is going to be important as it's mentioned in the issue. Look at those files and figure out what they do. In this case I'm really only interested in the bits where the performance- is parsed and validated. I Ctrl-F'ed to see if it was reading that performance- file and figured out that it was being checked in the validateTestCases function. Add the changes the issue is asking about. In this case, the issue wants to check that the names of test cases and workloads from the yaml file are unique. So I used a map to track which names had already come up and returned an error if they weren't unique. Hopefully this is helpful. I don't know if my PR will be accepted or not but I find it's usually best to just try and implement the changes needed with the limited information you have and let the reviewers tell you if you're on track or not.

Discussion:
return false } <ins> func (tc *testCase) workloadNamesUnique() error { workloadUniqueNames := map[string]bool{} for _, w := range tc.Workloads { if workloadUniqueNames[w.Name] { return fmt.Errorf("%s: workload name %s is not unique", tc.Name, w.Name) } workloadUniqueNames[w.Name] = true } return nil } </ins> // workload is a subtest under a testCase that tests the scheduler performance // for a certain ordering of ops. The set of nodes created and pods scheduled // in a workload may be heterogeneous.

if len(testCases) == 0 { return fmt.Errorf("no test cases defined") } <ins> testCaseUniqueNames := map[string]bool{} </ins> for _, tc := range testCases { <ins> if testCaseUniqueNames[tc.Name] { return fmt.Errorf("%s: name is not unique", tc.Name) } testCaseUniqueNames[tc.Name] = true </ins> if len(tc.Workloads) == 0 { return fmt.Errorf("%s: no workloads defined", tc.Name) } <ins> if err := tc.workloadNamesUnique(); err != nil { return err } </ins> if len(tc.WorkloadTemplate) == 0 { return fmt.Errorf("%s: no ops defined", tc.Name) }