On Mon, 22 Aug 2022 17:18:21 GMT, Ramesh Bhagavatam Gangadhar 
<rgangad...@openjdk.org> wrote:

>> There are total 160 scenarios written with combination of client properties 
>> (Client Scenarios) and Server Response (Server Scenarios).
>> 
>> In tabular format, Client and Server scenarios along with expected output 
>> are documented 
>> here:[Permalink](https://bugs.openjdk.org/browse/JDK-8291226?focusedCommentId=14519074&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14519074)
>> 
>> This Program Should be run mandatorily in othervm mode itself since it has 
>> system property changes so can't be clubbed with other scenarios. so each 
>> scenario should be run in individual JVM.
>> 
>> For each and every scenario, ServerSocket is created and waits for clients 
>> to connect to it.
>> isProxySet and serverReady are shared variables between server thread and 
>> client thread(main) and it should be set and reset to false for each and 
>> every scenario.
>> 
>> isProxySet and serverReady variables should be set by server thread before 
>> proceeding to client thread(main).
>> 
>> if isProxySet variable is set to true then client set the proxy value to 
>> url.openConnection(Proxy)
>> <SNIPPET>
>> if (isProxySet) { 
>>          httpUrlConnection = (sun.net.www.protocol.http.HttpURLConnection) 
>> url .openConnection(new Proxy(Type.HTTP, new InetSocketAddress("localhost", 
>> SERVER_PORT))); } 
>> else { 
>>         httpUrlConnection = (sun.net.www.protocol.http.HttpURLConnection) 
>> url.openConnection(); 
>> }
>> </SNIPPET>
>> 
>> Program tries to fetch the Value of <Key, Value> Pairs of HashMap 
>> KeepAliveCache where Key is KeepAliveKey and Value is ClientVector 
>> KeepAliveTimeout is stored in Value ClientVector of HashMap KeepAliveCache.
>> 
>> if connection is cached then KeepAliveTimeout is stored in ClientVector. 
>> KeepAliveTimeout stored in Value(ClientVector) of HashMap KeepAliveCache is 
>> compared with Expected Value.
>> 
>> if connection is not cached then connection is terminated immediately.
>
> Ramesh Bhagavatam Gangadhar has updated the pull request incrementally with 
> one additional commit since the last revision:
> 
>   Update and rename KeepAliveTest to KeepAliveTest.java
>   
>   1. Increased space from 2 to 4.
>   2. skipped test scenarios from 113 to 128 && 145 to 160

Changes requested by dfuchs (Reviewer).

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 263:

> 261:     private static final String H = C + NEW_LINE + 
> KEEP_ALIVE_TIMEOUT_NEG;
> 262:     private static final String I = C + NEW_LINE + 
> KEEP_ALIVE_TIMEOUT_ZERO;
> 263:     private static Logger logger = 
> Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection");

should be final

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 264:

> 262:     private static final String I = C + NEW_LINE + 
> KEEP_ALIVE_TIMEOUT_ZERO;
> 263:     private static Logger logger = 
> Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection");
> 264:     private String[] serverScenarios = {

should be final

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 279:

> 277:      * following are client scenarios which are repeated.
> 278:      */
> 279:     private String[] a = {

should be final

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 287:

> 285:         SERVER_100 + CLIENT_SEPARATOR + PROXY_200_NEGATIVE, 
> SERVER_100_NEGATIVE + CLIENT_SEPARATOR + PROXY_200
> 286:     };
> 287:     private String[] clientScenarios = {

should be final

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 299:

> 297:         a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 
> a[10], a[11], a[12], a[13], a[14], a[15],
> 298:     };
> 299:     private int[] expectedValues = {

should be final

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 311:

> 309:         0,    0,    0,   0,  0,  0,  0,  0,  0,   0,   0,   0,    0,    
> 0,     0,    0,
> 310:     };
> 311:     private CountDownLatch countDownLatch = null;

should be final and initialized to `new CountDownLatch(1);`

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 317:

> 315:         if((scenarioNumber >= 112 && scenarioNumber <= 127) || 
> (scenarioNumber >= 144 && scenarioNumber <= 159)) {
> 316:             System.out.println("Scenario Skipped:"+scenarioNumber);
> 317:             countDownLatch = new CountDownLatch(0);

should count down the latch instead of replacing its value

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 328:

> 326:         }
> 327:         System.out.println();
> 328:         serverInit(scenarioNumber);

should probably be called `startServer`

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 329:

> 327:         System.out.println();
> 328:         serverInit(scenarioNumber);
> 329:         clientInit(scenarioNumber);

should probably be called `runClient`

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 466:

> 464: 
> 465:         // wait until ServerSocket moves to listening state.
> 466:         while (!serverReady) {

Could use a cyclic barrier or a count down latch instead of sleeping here.

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 571:

> 569:                 }
> 570:             }
> 571:         }

There is an alignment problem here: it looks as if a close brace is missing,

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 576:

> 574:             System.out.println("Usage:java KeepAliveTest.java 
> <scenarioNumber>");
> 575:             System.out.println("e.g.:java KeepAliveTest.java 1");
> 576:             System.exit(1);

Since this is a test I would advise throwing an `IllegalArgumentException` or 
`AssertionError` instead of calling `System.exit(1);` Though arguably it 
doesn't matter much since this test must run in `/othervm` mode.

test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java line 584:

> 582:         KeepAliveTest keepAliveTest = new KeepAliveTest();
> 583:         if (args.length != 0) {
> 584:             keepAliveTest.myinit(Integer.valueOf(args[0]));

It would be good to have method names that reflect what the method does. Here 
for instance - what `myinit` does is actually running (or starting) the given 
scenario. So maybe it should be called `startScenario`.

-------------

PR: https://git.openjdk.org/jdk/pull/9958

Reply via email to