> On Feb. 23, 2017, 10:18 p.m., Kirk Lund wrote:
> > +1 I know this change is good and would be safe commit it as is, however we 
> > have been trying to create UnitTests for any class that we touch that 
> > doesn't already have a UnitTest. As a whole, the project relies too much on 
> > end-to-end tests which take forever to run and tend to be more flaky.
> > 
> > So I still recommend trying to write a UnitTest that at a minimum covers 
> > the method you've modified. My definition of UnitTest here is a very fast 
> > test that uses mocking (Mockito) to mock everything this class method 
> > interacts with and the test does not interact with file system or network. 
> > If this method interacts with file system, then there are generally two 
> > choices: test it in an IntegrationTest or refactor the method to allow you 
> > to UnitTest it in isolation from file system. The test class itself has a 
> > JUnit @Category annotation at the top and  the category is either 
> > UnitTest.class or IntegrationTest.class in this case. 
> > 
> > For testing an exception, I recommend using AssertJ:
> > 
> > assertThatThrownBy(() -> 
> > target.callMethodThatThrows()).isInstanceOf(IllegalStateException.class).hasMessageContaining("resourceTypeId").hasMessageContaining("resourceName");
> > 
> > You could instead use .hasMessage("ResourceType is missing for 
> > resourceTypeId xxx, resourceName yyy") but that does tend to make for a 
> > more brittle test.
> 
> Kirk Lund wrote:
>     In this case, you could probably just modify 
> StatArchiveWithMissingResourceTypeRegressionTest
> 
> Kirk Lund wrote:
>     Also, the travis CI that's hooked up to the github project for geode is 
> executing test but it doesn't run integrationTest or distributedTest. If you 
> run integrationTest, I think you'll see 
> StatArchiveWithMissingResourceTypeRegressionTest fail due to your change. 
> You'll want to update the assertion in this test:
>     ```java
>       @Test // fixed GEODE-2013
>       public void throwsIllegalStateExceptionWithMessage() throws Exception {
>         assertThatThrownBy(() -> new StatArchiveReader(new File[] 
> {this.archiveFile}, null, true))
>             .isExactlyInstanceOf(IllegalStateException.class) // was 
> NullPointerException
>             .hasMessage("ResourceType is missing for resourceTypeId 0"); // 
> was null
>       }
>     ```
> 
> Srikanth Manvi wrote:
>     Hi Kirk,
>     
>     Thank you for the comments and background around Unit/Integration test 
> options.
>     I ran ./gradlew build, which was successful, hence I submitted a PR and a 
> review request. Later on (many hours after I started precheckin) I noticed 
> that the test you mentioned in 
> StatArchiveWithMissingResourceTypeRegressionTest did fail. I made changes to 
> the test and pushed a new 
> commit(https://github.com/apache/geode/pull/406/commits/56c2a7fce00b5a44d50f1cc8374d1da3ab214344#diff-a74ae4844c1a648682d8a0d297976e31R62).
>     I had a feeling that I was making the test brittle by using 
> `.hasMessage("ResourceType is missing for resourceTypeId 0, resourceName 
> statistics1")`;
>     but at the same I felt it was not too brittle as the gfs file was picked 
> up from the 
> org/apache/geode/internal/statistics/StatArchiveWithMissingResourceTypeRegressionTest.gfs
>  which hasnt changed since creation. 
>     
>     But I agree, your suggestion of using `.hasMessageContaining(...)` , I 
> will incorporate that and will push a new commit.
>     
>     If you dont mind I have few questions, apologies if this is not the right 
> place. 
>     
>     1. I pushed 1 commit and raised a PR and then submitted this review 
> request(https://reviews.apache.org/r/56964/). Later on realized that the 
> regression test in StatArchiveWithMissingResourceTypeRegressionTest fails 
> because of my change. Hence pushed 1 more commit (part of the same PR 
> #406[smanvi-pivotal  wants to merge 2 commits into apache:develop from 
> smanvi-pivotal:feature/GEODE-2526]) to fix the test and did not create a new 
> review request. Should every commit(pushed at different times before the PR 
> is closed) in a PR have its own review request ?
>     
>     2. For non-committers isn`t opening a PR in github equivalent to opening 
> a review request in https://reviews.apache.org ? In future should I keep 
> opening review requests along with PRs or is reviews.apache.org mainly for 
> committers ?
>     
>     3. I let my "./gradlew precheckin" execute for about 5 hrs and it was 
> still not complete. Is there anything that I can do to speed it up ? How do 
> regular contributors/committers push multiple commits/day if each commit 
> needs to be preceeded by a succesfull precheckin ?

1. For a PR, I would use a feature/GEODE-nnn branch and use "git rebase -i 
origin/develop" after doing a git fetch to collapse multiple commits into 1 
commit. Since it's your own branch you can then do a "git push --force" and 
this will automatically update the PR for you. It'll rerun travis automatically 
too.
2. I would recommend doing just a github PR and we'll do the review there on 
github. I wouldn't use reviews.apache.org unless you're a committer and will be 
pushing your own changes to the apache git repo.
3. Yeah, the Geode Nightly Build runs precheckin and it takes around 12 hours. 
Jens setup a CI infrastructure internal at Pivotal which runs test, 
integrationTest, distributedTest and flakyTest all in parallel. I think he also 
has distributedTest running its dunit tests in parallel as well. The whole 
process takes 3-4 hours and uses docker. I recommend asking about this on dev 
list -- maybe you can set up something similar.


- Kirk


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/56964/#review166590
-----------------------------------------------------------


On Feb. 23, 2017, 3:03 a.m., Srikanth Manvi wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/56964/
> -----------------------------------------------------------
> 
> (Updated Feb. 23, 2017, 3:03 a.m.)
> 
> 
> Review request for geode and Kirk Lund.
> 
> 
> Repository: geode
> 
> 
> Description
> -------
> 
> Enhanced the log statement to include the ResourceType Name.
> 
> 
> Diffs
> -----
> 
>   
> geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
>  9fba511 
> 
> Diff: https://reviews.apache.org/r/56964/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Srikanth Manvi
> 
>

Reply via email to