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

Steve Rowe reopened SOLR-9107:
------------------------------

My Jenkins found a reproducing seed for a 
{{TestSSLRandomization.testSslRandomizer()}} failure:

{noformat}
   [junit4]   2> NOTE: reproduce with: ant test  
-Dtestcase=TestSSLRandomization -Dtests.method=testSSLRandomizer 
-Dtests.seed=2E775F0292A463C2 -Dtests.slow=true 
-Dtests.linedocsfile=/home/jenkins/lucene-data/enwiki.random.lines.txt 
-Dtests.locale=en-PH -Dtests.timezone=Africa/Blantyre -Dtests.asserts=true 
-Dtests.file.encoding=ISO-8859-1
   [junit4] FAILURE 0.05s J1  | TestSSLRandomization.testSSLRandomizer <<<
   [junit4]    > Throwable #1: java.lang.AssertionError: expected:<true> but 
was:<false>
   [junit4]    >        at 
__randomizedtesting.SeedInfo.seed([2E775F0292A463C2:84FFA6FD36CC78D6]:0)
   [junit4]    >        at 
org.apache.solr.cloud.TestSSLRandomization.testSSLRandomizer(TestSSLRandomization.java:199)
{noformat}

{code:java|title=TestSSLRandomization.testSSLRandomizer()}
195: r = SSLRandomizer.getSSLRandomizerForClass(MaxAnnotated.class);
196: assertEquals(1.0D, r.ssl, 0.0D);
197: assertEquals(1.0D, r.clientAuth, 0.0D);
198: conf = r.createSSLTestConfig();
199: assertEquals(true, conf.isSSLMode());
200: assertEquals(true, conf.isClientAuthMode());
{code}

{code:java|title=RandomizeSSL.SSLRandomizer}
public SSLTestConfig createSSLTestConfig() {
  // even if we know SSL is disabled, always consume the same amount of 
randomness
  // that way all other test behavior should be consistent even if a user 
adds/removes @SuppressSSL
      
  final boolean useSSL = TestUtil.nextInt(LuceneTestCase.random(), 0, 1000) < 
    (int)(1000 * getEffectiveOdds(ssl, LuceneTestCase.TEST_NIGHTLY, 
LuceneTestCase.RANDOM_MULTIPLIER));
  final boolean useClientAuth = TestUtil.nextInt(LuceneTestCase.random(), 0, 
1000) < 
    (int)(1000 * getEffectiveOdds(clientAuth, LuceneTestCase.TEST_NIGHTLY, 
LuceneTestCase.RANDOM_MULTIPLIER));

  return new SSLTestConfig(useSSL, useClientAuth);
}
{code}
With the above seed {{TestUtil.nextInt()}} produces the top of the range 
(1000), and so {{useSSL}} is set to {{false}}, since {{1000}} is not less than 
{{1000 * the effective odds (1.0)}}.

One way to fix this is to reduce the top of the range of random ints from 1000 
to 999, so that effective 100% odds are never randomly trumped.

I believe that the inverse is not a problem currently or with my proposed fix: 
when the effective odds are {{0.0}}, if the next random int happens to be 
{{0}}, {{0 < 0}} will evaluate to {{false}}.

The {{useClientAuth}} calculation will also need the same fix.

> add annotation for more fine grained control of SSL per test-class
> ------------------------------------------------------------------
>
>                 Key: SOLR-9107
>                 URL: https://issues.apache.org/jira/browse/SOLR-9107
>             Project: Solr
>          Issue Type: Sub-task
>            Reporter: Hoss Man
>            Assignee: Hoss Man
>             Fix For: 6.1, master (7.0)
>
>         Attachments: SOLR-9107.patch, SOLR-9107.patch
>
>
> Spinning off this idea from my earlier comment in SOLR-5776...
> ----
> At some point in the future, after all this soaks, we should consider 
> increasing the odds of using SSL – perhaps even add a new annotation (or 
> replace @SupressSSL) with a param to help control the odds of using SSL / 
> clientAuth on a per-class basis, ie...
> {noformat}
>   @UseSSL(false) // same as @SupressSSL
>   @UseSSL() //  same as default if no annotation: SolrTestCaseJ4 picks SSL / 
> clientAuth using LuceneTestCase.rarely
>   @UseSSL(ssl=0.75,clientAuth=0.25) // fine control of odds of using ssl & 
> clientauth
> {noformat}
> ...some tests, like TestSSLRandomization should ideally have much higher odds 
> of using SSL then other tests, and if we had an easy way to say "these 
> handful of simple cloud tests should use SSL very frequently" then it 
> wouldn't matter so much if the odds of other really 'expensive' tests only 
> use SSL once in a blue moon.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to