> 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
>
>