[
https://issues.apache.org/jira/browse/GEODE-1350?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirk Lund updated GEODE-1350:
-----------------------------
Description:
As of JUnit 4.12, the use of Categories with the Parameterized runner is broken
and may not get fixed by the JUnit community.
All Geode tests using Paramterized should be reimplemented to use
JUnitParamsRunner.
Example 1 of test using JUnitParamsRunner:
{noformat}
@Category(UnitTest.class)
@RunWith(JUnitParamsRunner.class)
public class LogServiceJUnitTest {
@Test
@Parameters(method = "getToLevelParameters")
public void toLevelShouldReturnMatchingLog4jLevel(final int intLevel, final
Level level) {
assertThat(LogService.toLevel(intLevel)).isSameAs(level);
}
private static final Object[] getToLevelParameters() {
return $(
new Object[] { 0, Level.OFF },
new Object[] { 100, Level.FATAL },
new Object[] { 200, Level.ERROR },
new Object[] { 300, Level.WARN },
new Object[] { 400, Level.INFO },
new Object[] { 500, Level.DEBUG },
new Object[] { 600, Level.TRACE },
new Object[] { Integer.MAX_VALUE, Level.ALL }
);
}
{noformat}
Example 2 of test using JUnitParamsRunner:
{noformat}
@Category(UnitTest.class)
@RunWith(JUnitParamsRunner.class)
public class RegionEntryFactoryBuilderJUnitTest {
/**
* This method will test that the correct RegionEntryFactory is created
* dependent on the 5 conditionals:
* enableStats, enableLRU, enableDisk, enableVersion, enableOffHeap
*/
@Test
@Parameters({
"VMThinRegionEntryHeapFactory,false,false,false,false,false",
"VMThinRegionEntryOffHeapFactory,false,false,false,false,true",
"VersionedThinRegionEntryHeapFactory,false,false,false,true,false",
"VersionedThinRegionEntryOffHeapFactory,false,false,false,true,true",
"VMThinDiskRegionEntryHeapFactory,false,false,true,false,false",
"VMThinDiskRegionEntryOffHeapFactory,false,false,true,false,true",
"VersionedThinDiskRegionEntryHeapFactory,false,false,true,true,false",
"VersionedThinDiskRegionEntryOffHeapFactory,false,false,true,true,true",
"VMThinLRURegionEntryHeapFactory,false,true,false,false,false",
"VMThinLRURegionEntryOffHeapFactory,false,true,false,false,true",
"VersionedThinLRURegionEntryHeapFactory,false,true,false,true,false",
"VersionedThinLRURegionEntryOffHeapFactory,false,true,false,true,true",
"VMThinDiskLRURegionEntryHeapFactory,false,true,true,false,false",
"VMThinDiskLRURegionEntryOffHeapFactory,false,true,true,false,true",
"VersionedThinDiskLRURegionEntryHeapFactory,false,true,true,true,false",
"VersionedThinDiskLRURegionEntryOffHeapFactory,false,true,true,true,true",
"VMStatsRegionEntryHeapFactory,true,false,false,false,false",
"VMStatsRegionEntryOffHeapFactory,true,false,false,false,true",
"VersionedStatsRegionEntryHeapFactory,true,false,false,true,false",
"VersionedStatsRegionEntryOffHeapFactory,true,false,false,true,true",
"VMStatsDiskRegionEntryHeapFactory,true,false,true,false,false",
"VMStatsDiskRegionEntryOffHeapFactory,true,false,true,false,true",
"VersionedStatsDiskRegionEntryHeapFactory,true,false,true,true,false",
"VersionedStatsDiskRegionEntryOffHeapFactory,true,false,true,true,true",
"VMStatsLRURegionEntryHeapFactory,true,true,false,false,false",
"VMStatsLRURegionEntryOffHeapFactory,true,true,false,false,true",
"VersionedStatsLRURegionEntryHeapFactory,true,true,false,true,false",
"VersionedStatsLRURegionEntryOffHeapFactory,true,true,false,true,true",
"VMStatsDiskLRURegionEntryHeapFactory,true,true,true,false,false",
"VMStatsDiskLRURegionEntryOffHeapFactory,true,true,true,false,true",
"VersionedStatsDiskLRURegionEntryHeapFactory,true,true,true,true,false",
"VersionedStatsDiskLRURegionEntryOffHeapFactory,true,true,true,true,true"
})
public void testRegionEntryFactoryUnitTest(String factoryName, boolean
enableStats, boolean enableLRU, boolean enableDisk,
boolean enableVersioning, boolean enableOffHeap) {
assertEquals(factoryName,
regionEntryFactoryBuilder.getRegionEntryFactoryOrNull(enableStats,
enableLRU, enableDisk, enableVersioning,
enableOffHeap).getClass().getSimpleName());
}
{noformat}
Example of BROKEN test using Parameterized which is skipped by our test targets
due to use of Categories:
{noformat}
@Category(IntegrationTest.class)
@RunWith(Parameterized.class)
public class GfshCommandsSecurityTest {
public GfshCommandsSecurityTest(boolean useHttp){
gfshConnection = new GfshShellConnectionRule(jmxPort, httpPort, useHttp);
}
@Parameterized.Parameters
public static Collection parameters() {
return Arrays.asList(new Object[][] {
{ false}, // useHttp=false,
{ true } // useHttp=true,
});
}
{noformat}
was:
As of JUnit 4.12, the use of Categories with the Parameterized runner is broken
and may not get fixed by the JUnit community.
All Geode tests using
Example of dunit test with a custom runner:
{noformat}
@Category(DistributedTest.class)
@RunWith(Parameterized.class)
public class ListAndDescribeDiskStoreCommandsDUnitTest extends
CliCommandTestBase {
{noformat}
Gradle command:
{noformat}
./gradlew -DdistributedTest.single=ListAndDescribeDiskStoreCommandsDUnitTest
geode-core:distributedTest
{noformat}
Result:
{noformat}
:geode-core:distributedTest FAILED
:combineReports
All test reports at
/export/latvia1/users/klund/dev/gemfire/open/build/reports/combined
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':geode-core:distributedTest'.
> Could not find matching test for pattern:
> ListAndDescribeDiskStoreCommandsDUnitTest
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.
BUILD FAILED
Total time: 5.918 secs
{noformat}
Example of dunit test that does not specify a custom runner:
{noformat}
@Category(DistributedTest.class)
public class DistributedMemberDUnitTest extends JUnit4DistributedTestCase {
{noformat}
Gradle command:
{noformat}
./gradlew -DdistributedTest.single=DistributedMemberDUnitTest
geode-core:distributedTest
{noformat}
Result:
{noformat}
geode-core:distributedTest
:combineReports
All test reports at
/export/latvia1/users/klund/dev/gemfire/open/build/reports/combined
BUILD SUCCESSFUL
Total time: 32.987 secs
{noformat}
> JUnit 4 @Category combined with @RunWith(Parameterized.class) does not work
> ---------------------------------------------------------------------------
>
> Key: GEODE-1350
> URL: https://issues.apache.org/jira/browse/GEODE-1350
> Project: Geode
> Issue Type: Bug
> Components: build
> Reporter: Kirk Lund
>
> As of JUnit 4.12, the use of Categories with the Parameterized runner is
> broken and may not get fixed by the JUnit community.
> All Geode tests using Paramterized should be reimplemented to use
> JUnitParamsRunner.
> Example 1 of test using JUnitParamsRunner:
> {noformat}
> @Category(UnitTest.class)
> @RunWith(JUnitParamsRunner.class)
> public class LogServiceJUnitTest {
> @Test
> @Parameters(method = "getToLevelParameters")
> public void toLevelShouldReturnMatchingLog4jLevel(final int intLevel, final
> Level level) {
> assertThat(LogService.toLevel(intLevel)).isSameAs(level);
> }
> private static final Object[] getToLevelParameters() {
> return $(
> new Object[] { 0, Level.OFF },
> new Object[] { 100, Level.FATAL },
> new Object[] { 200, Level.ERROR },
> new Object[] { 300, Level.WARN },
> new Object[] { 400, Level.INFO },
> new Object[] { 500, Level.DEBUG },
> new Object[] { 600, Level.TRACE },
> new Object[] { Integer.MAX_VALUE, Level.ALL }
> );
> }
> {noformat}
> Example 2 of test using JUnitParamsRunner:
> {noformat}
> @Category(UnitTest.class)
> @RunWith(JUnitParamsRunner.class)
> public class RegionEntryFactoryBuilderJUnitTest {
> /**
> * This method will test that the correct RegionEntryFactory is created
> * dependent on the 5 conditionals:
> * enableStats, enableLRU, enableDisk, enableVersion, enableOffHeap
> */
> @Test
> @Parameters({
> "VMThinRegionEntryHeapFactory,false,false,false,false,false",
> "VMThinRegionEntryOffHeapFactory,false,false,false,false,true",
> "VersionedThinRegionEntryHeapFactory,false,false,false,true,false",
> "VersionedThinRegionEntryOffHeapFactory,false,false,false,true,true",
> "VMThinDiskRegionEntryHeapFactory,false,false,true,false,false",
> "VMThinDiskRegionEntryOffHeapFactory,false,false,true,false,true",
> "VersionedThinDiskRegionEntryHeapFactory,false,false,true,true,false",
> "VersionedThinDiskRegionEntryOffHeapFactory,false,false,true,true,true",
> "VMThinLRURegionEntryHeapFactory,false,true,false,false,false",
> "VMThinLRURegionEntryOffHeapFactory,false,true,false,false,true",
> "VersionedThinLRURegionEntryHeapFactory,false,true,false,true,false",
> "VersionedThinLRURegionEntryOffHeapFactory,false,true,false,true,true",
> "VMThinDiskLRURegionEntryHeapFactory,false,true,true,false,false",
> "VMThinDiskLRURegionEntryOffHeapFactory,false,true,true,false,true",
> "VersionedThinDiskLRURegionEntryHeapFactory,false,true,true,true,false",
>
> "VersionedThinDiskLRURegionEntryOffHeapFactory,false,true,true,true,true",
> "VMStatsRegionEntryHeapFactory,true,false,false,false,false",
> "VMStatsRegionEntryOffHeapFactory,true,false,false,false,true",
> "VersionedStatsRegionEntryHeapFactory,true,false,false,true,false",
> "VersionedStatsRegionEntryOffHeapFactory,true,false,false,true,true",
> "VMStatsDiskRegionEntryHeapFactory,true,false,true,false,false",
> "VMStatsDiskRegionEntryOffHeapFactory,true,false,true,false,true",
> "VersionedStatsDiskRegionEntryHeapFactory,true,false,true,true,false",
> "VersionedStatsDiskRegionEntryOffHeapFactory,true,false,true,true,true",
> "VMStatsLRURegionEntryHeapFactory,true,true,false,false,false",
> "VMStatsLRURegionEntryOffHeapFactory,true,true,false,false,true",
> "VersionedStatsLRURegionEntryHeapFactory,true,true,false,true,false",
> "VersionedStatsLRURegionEntryOffHeapFactory,true,true,false,true,true",
> "VMStatsDiskLRURegionEntryHeapFactory,true,true,true,false,false",
> "VMStatsDiskLRURegionEntryOffHeapFactory,true,true,true,false,true",
> "VersionedStatsDiskLRURegionEntryHeapFactory,true,true,true,true,false",
>
> "VersionedStatsDiskLRURegionEntryOffHeapFactory,true,true,true,true,true"
> })
> public void testRegionEntryFactoryUnitTest(String factoryName, boolean
> enableStats, boolean enableLRU, boolean enableDisk,
> boolean enableVersioning, boolean enableOffHeap) {
> assertEquals(factoryName,
> regionEntryFactoryBuilder.getRegionEntryFactoryOrNull(enableStats,
> enableLRU, enableDisk, enableVersioning,
> enableOffHeap).getClass().getSimpleName());
> }
> {noformat}
> Example of BROKEN test using Parameterized which is skipped by our test
> targets due to use of Categories:
> {noformat}
> @Category(IntegrationTest.class)
> @RunWith(Parameterized.class)
> public class GfshCommandsSecurityTest {
> public GfshCommandsSecurityTest(boolean useHttp){
> gfshConnection = new GfshShellConnectionRule(jmxPort, httpPort, useHttp);
> }
> @Parameterized.Parameters
> public static Collection parameters() {
> return Arrays.asList(new Object[][] {
> { false}, // useHttp=false,
> { true } // useHttp=true,
> });
> }
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)