[ 
https://issues.apache.org/jira/browse/HDDS-5097?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rakesh Radhakrishnan reassigned HDDS-5097:
------------------------------------------

    Assignee: Rakesh Radhakrishnan

> [FSO] Cleanup integration tests and reduce the execution time 
> --------------------------------------------------------------
>
>                 Key: HDDS-5097
>                 URL: https://issues.apache.org/jira/browse/HDDS-5097
>             Project: Apache Ozone
>          Issue Type: Sub-task
>            Reporter: Marton Elek
>            Assignee: Rakesh Radhakrishnan
>            Priority: Blocker
>              Labels: pull-request-available
>
> Apache organization has a shared, organization-level resource limit for 
> Github actions. All the projects should use the available minutes fairly to 
> avoid blocking the build of other Apache projects.
> This is discussed recently here: 
> https://lists.apache.org/thread.html/r48d079eeff292254db22705c8ef8618f87ff7adc68d56c4e5d0b4105%40%3Cbuilds.apache.org%3E,
>  but same mailing list has older threads, too.
> HDDS-2939 branch build time has been increased significantly. The problem 
> with acceptance tests are tracked with HDDS-5093. 
> But integration tests are also increased from ~56 minutes to 94 minutes 
> (~158%)
> We need to avoid such increase unless we have very good reason to have it.
> If we check the execution time of the tests on the branch and the master we 
> can see the problem in more details:
> {code}
>  tmp  %  grep -e 'Tests run: .* in org' "20" | awk -F '[,:\-]' '{print $6, 
> $8, $10, $12, $14, $15}' | sed 's/s   in //g' | sort -n -k5 -r | head
> awk: warning: escape sequence `\-' treated as plain `-'
>  104  0  0  0  478.951 org.apache.hadoop.fs.ozone.TestRootedOzoneFileSystem
>  88  0  0  0  458.703 org.apache.hadoop.fs.ozone.TestOzoneFileSystem
>  18  0  0  2  436.521 org.apache.hadoop.fs.ozone.TestOzoneFileInterfaces
>  6  0  0  0  152.808 
> org.apache.hadoop.fs.ozone.TestOzoneFSWithObjectStoreCreate
>  4  0  0  0  108.191 org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose
>  1  0  0  0  88.905 org.apache.hadoop.hdds.scm.pipeline.TestNodeFailure
>  2  0  0  0  74.192 org.apache.hadoop.fs.ozone.TestOzoneFsHAURLs
>  19  0  0  0  58.2 
> org.apache.hadoop.fs.ozone.contract.rooted.ITestRootedOzoneContractGetFileStatus
>  8  0  0  0  57.063 
> org.apache.hadoop.fs.ozone.contract.rooted.ITestRootedOzoneContractDistCp
>  8  0  0  0  54.612 
> org.apache.hadoop.fs.ozone.contract.ITestOzoneContractDistCp
>  tmp  %  grep -e 'Tests run: .* in org' "18" | awk -F '[,:\-]' '{print $6, 
> $8, $10, $12, $14, $15}' | sed 's/s   in //g' | sort -n -k5 -r | head
> awk: warning: escape sequence `\-' treated as plain `-'
>  128  0  0  0  509.388 org.apache.hadoop.fs.ozone.TestRootedOzoneFileSystem
>  132  0  0  0  508.585 org.apache.hadoop.fs.ozone.TestOzoneFileSystem
>  140  0  0  8  479.578 org.apache.hadoop.fs.ozone.TestOzoneFileSystemV1
>  18  0  0  2  475.686 org.apache.hadoop.fs.ozone.TestOzoneFileInterfaces
>  128  0  0  0  470.619 org.apache.hadoop.fs.ozone.TestRootedOzoneFileSystemV1
>  18  0  0  6  329.812 org.apache.hadoop.fs.ozone.TestOzoneFileInterfacesV1
>  5  0  0  0  226.093 
> org.apache.hadoop.fs.ozone.TestDirectoryDeletingServiceWithFSOBucket
>  6  0  0  0  171.861 
> org.apache.hadoop.fs.ozone.TestOzoneFSWithObjectStoreCreate
>  4  0  0  0  139.951 org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose
>  3  0  0  0  82.128 org.apache.hadoop.fs.ozone.TestOzoneFileSystemPrefixParser
> {code}
> It turned out that a lot of tests just copied with V1 prefix  with small 
> modification  (or original test extended with V1 which means  the methods of 
> the old and new tests are executed) instead of improving the original test to 
> cover both of the cases (simple/prefix-ed).
> Also: the same functionality seems to be tested on multiple levels 
> (FileSystemInterface, OMRequest, acceptance test...) 
> This copy can make the maintenance of the tests slightly harder, and the V1 
> prefix is quite meaningless and confusing.
> From the legendary "Clean code" book:
> >Programmers create problems for themselves when they write code solely to 
> >satisfy a compiler or interpreter. For example, because you can’t use the 
> >same name to refer to two different things in the same scope, you might be 
> >tempted to change one name in an arbitrary way. Sometimes this is done by 
> >misspelling one, leading to the surprising situation where correcting 
> >spelling errors leads to an inability to compile.2
> > [...] It is not sufficient to add number series or noise words, even though 
> > the compiler is satisfied. If names must be different, then they should 
> > also mean something different.
> > Number-series naming (a1, a2, .. aN) is the opposite of intentional naming. 
> > Such names are not disinformative—they are noninformative; they provide no 
> > clue to the author’s intention....
> I totally agree with this section, I think we should avoid using V1 prefixes 
> everywhere.
> Suggestions:
>  1. We should minimize the additional build time when possible.
>  2. Similar to HDDS-5093 instead of creating a new dimension to the 
> parametrized tests (which double the execution time) we should carefully 
> select the meaningful sets of parameters. (When we have 3 parameters for a 
> unit test with 2 values for each it's already 8 possible executions. 
> Execution all of them with and without prefix may not be required, it seems 
> to be better to select representative parameter sets and use only them).
>  3. The V1 prefixes should be avoided. When possible we need to modify the 
> original unit tests with adding additional parameters. It makes it easier to 
> maintain the unit tests, and it requires less code and (together with the 
> previous point) less time  
>  4. We don't need to repeat ALL the tests IMHO. For example if we modified 
> only the rename part of the OzoneFileSystem, I assume that it's enough to 
> test that part with/without prefix (especially as the prefix handling is 
> already tested with testing om requests...)
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to