Kirk- rather than have Gradle generate the .idea project files, have you tried importing the Geode project from existing sources using Gradle the template?
On Wed, Mar 23, 2016 at 1:28 PM, Kirk Lund <[email protected]> wrote: > RestAPIsWithSSLDUnitTest passes on the command-line. > > When I execute RestAPIsWithSSLDUnitTest in my IntelliJ project, the > classpath of the test prints out with two versions of httpclient and > httpcore: > > [vm_1] > > > /Users/klund/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.2.5/666e26e76f2e87d84e4f16acb546481ae1b8e9a6/httpclient-4.2.5.jar > [vm_1] > > > /Users/klund/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.2.4/3b7f38df6de5dd8b500e602ae8c2dd5ee446f883/httpcore-4.2.4.jar > [vm_1] > > > /Users/klund/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.5.1/7e3cecc566df91338c6c67883b89ddd05a17db43/httpclient-4.5.1.jar > [vm_1] > > > /Users/klund/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.4.3/e876a79d561e5c6207b78d347e198c8c4531a5e5/httpcore-4.4.3.jar > > If you use "./gradlew idea" the resulting module definitions are not > sufficient (to illustrate, try generating intellij projects for closed+open > and then try editing and running DUnits in legacyDUnit and both assembly > projects) and require some manual adjusting which is obviously error prone. > I'm not an IntelliJ or gradle expert so I doubt that I'll be the one to fix > this. > > Ultimately I'd like to see all of this become easier and simpler. I believe > too much complexity or difficulty will result in a smaller number of > contributors. It also results in contributors spending their time with > gradle or the IDE instead of on geode. > > -Kirk > > > On Wed, Mar 23, 2016 at 12:04 PM, Dan Smith <[email protected]> wrote: > > > First off, your intellij classpath and gradle classpath are pretty much > the > > same. The one exception, I think, is that the test target for > > geode-assembly sets up a different runtime classpath to point at the > > bundled product. I didn't set that up, but I think maybe the idea is that > > we needed some tests of the actual bundled binary? Take a look at > > geode-assembly/build.gradle. If someone knows how to fix the setup that > so > > we still have that test coverage of the bundled product and the tests do > > work in intellij, please fix it! All of the rest of the tests should be > > using exactly the same environment on the command line and in the IDE. > > > > I'm not sure if this is even your problem Kirk, did you try running from > > the command line? > > > > Second, I don't see anything wrong with having transitive test > > dependencies. It's a huge pain to track down the transitive dependencies > > and keep them up to date manually. They aren't hurting you! > > > > Regarding John's struggles with dependencies of geode, what we really > need > > to do is clean up *product* dependencies of geode core - we're pulling in > > all sorts of stuff for gfsh, pulse, the REST API, etc. GEODE-818 is all > > about cleaning that up. I was hoping to take up GEODE-1072 (remove HDFS > > code) when I get a chance. If you want to clean up the dependencies > please > > chip in and take on some of those subtasks, the sooner the better! > > > > -Dan > > > > On Wed, Mar 23, 2016 at 11:34 AM, John Blum <[email protected]> wrote: > > > > > If you created the IntelliJ IDEA project from the Gradle build, then it > > is > > > Geode's Gradle build scripts that are specifying the dependencies and > > thus > > > the Gradle build scripts are wrong. In Maven, you can declare a > > > dependencyManagement section (along with exclusions) to manage > transitive > > > dependencies. I don't recall what the equivalent is in Gradle for > > > dependencyManagement. > > > > > > On Wed, Mar 23, 2016 at 11:24 AM, Kirk Lund <[email protected]> wrote: > > > > > > > I think that maybe we don't want to continue with transitive > > dependencies > > > > enabled for testing. If we turn that off then we go back to having to > > > > specify all versions even runtime test dependencies right? Are there > > any > > > > valid arguments for keeping transitive dependencies enabled for > > testing? > > > > > > > > Also, why would my intellij dependencies be different from gradle > > > > command-line? The one was built from the *.gradle files in geode. If > > > > intellij's gradle picks up multiple versions of libraries, then I > think > > > > that still means something isn't right in our *.gradle files. > > > > > > > > Not that I want to see test failures... BUT, I want to spend my time > > > > diagnosing test failures instead of dealing with gradle and > dependency > > > > versioning and wondering why intellij is picking up 2 versions of > jna, > > 3 > > > > versions of apache http, etc. > > > > > > > > -Kirk > > > > > > > > > > > > On Wed, Mar 23, 2016 at 11:04 AM, John Blum <[email protected]> > wrote: > > > > > > > > > In a nutshell, you want the dependencies and all the transitive > > > > > dependencies versions to agree, otherwise conflicts like what Kirk > > > > > experienced, as well as what I experienced while integrating Apache > > > Geode > > > > > support into Spring Session, will occur, and users will have > problems > > > > using > > > > > Geode in different contexts (e.g. App Server containers for Session > > > > > management) > > > > > > > > > > Letting transitive dependencies of Geode (i.e. sub-projects) > dictate > > > > > dependency versions is NOT right and recipe for disaster. Also, > you > > > are > > > > > not testing the dependencies, you are testing Geode with the > > > > dependencies. > > > > > > > > > > > > > > > On Wed, Mar 23, 2016 at 10:48 AM, Dan Smith <[email protected]> > > wrote: > > > > > > > > > > > As far as the multiple versions of httpclient, I only see that > > > > dependency > > > > > > showing up in the test dependencies. Different sub projects have > > > > > different > > > > > > test dependencies, which are transitively pulling in different > > > versions > > > > > of > > > > > > this jar. > > > > > > > > > > > > We can certainly force a version across all of the different > > projects > > > > in > > > > > > dependency-resolution.gradle. But I think given these are > different > > > > > > projects with different test dependencies we should just let them > > > pull > > > > in > > > > > > whatever test dependencies they need. > > > > > > > > > > > > > > > > > > > ./gradlew geode-core:dependencyInsight --dependency httpclient > > > > > > --configuration testRuntime > > > > > > Picked up JAVA_TOOL_OPTIONS: > > > > > > :geode-core:dependencyInsight > > > > > > org.apache.httpcomponents:httpclient:4.2.5 > > > > > > \--- org.apache.hadoop:hadoop-auth:2.4.1 > > > > > > \--- testRuntime > > > > > > > > > > > > > > > > > > > > > > > > > ./gradlew geode-pulse:dependencyInsight --dependency httpclient > > > > > > --configuration testRuntime > > > > > > Picked up JAVA_TOOL_OPTIONS: > > > > > > :geode-pulse:dependencyInsight > > > > > > org.apache.httpcomponents:httpclient:4.5.1 > > > > > > +--- org.seleniumhq.selenium:selenium-api:2.52.0 > > > > > > | +--- testRuntime > > > > > > | \--- org.seleniumhq.selenium:selenium-remote-driver:2.52.0 > > > > > > | +--- testRuntime > > > > > > | +--- > > org.seleniumhq.selenium:selenium-firefox-driver:2.52.0 > > > > > > | | \--- testRuntime > > > > > > | \--- org.seleniumhq.selenium:selenium-support:2.52.0 > > > > > > | \--- testRuntime > > > > > > \--- org.seleniumhq.selenium:selenium-remote-driver:2.52.0 (*) > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Mar 23, 2016 at 10:27 AM, Dan Smith <[email protected]> > > > wrote: > > > > > > > > > > > > > The tests in that geode-assembly project are supposed to run on > > the > > > > > > binary > > > > > > > assembly of the project, so I think the classpath when run from > > the > > > > > > command > > > > > > > line might be a bit different than what you get in intellij. I > > > think > > > > > the > > > > > > > command line classpath just points at geode-dependencies.jar. > > > > > > > > > > > > > > -Dan > > > > > > > > > > > > > > > > > > > > > On Wed, Mar 23, 2016 at 10:01 AM, Kirk Lund <[email protected]> > > > > wrote: > > > > > > > > > > > > > >> So as I look at dependencies, I see that our gradle build is > > > > > ultimately > > > > > > >> depending on multiple versions of the same libraries. Can't we > > > clean > > > > > > this > > > > > > >> up? > > > > > > >> > > > > > > >> org.apache.httpcomponents:httpclient:4.2.5 > > > > > > >> org.apache.httpcomponents:httpclient:4.3.3 > > > > > > >> org.apache.httpcomponents:httpclient:4.5.1 > > > > > > >> > > > > > > >> I really don't want multiple versions of anything in this > > project. > > > > Are > > > > > > we > > > > > > >> not using gradle correctly? > > > > > > >> > > > > > > >> -Kirk > > > > > > >> > > > > > > >> > > > > > > >> On Wed, Mar 23, 2016 at 9:23 AM, Kirk Lund <[email protected]> > > > > wrote: > > > > > > >> > > > > > > >> > RestAPIsWithSSLDUnitTest failed in the nightly build. > Failure > > > > stack > > > > > is > > > > > > >> > below. I tried running this test by itself in intellij and > it > > > > fails > > > > > > >> with "java.lang.NoSuchFieldError: > > > > > > >> > INSTANCE" from "at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)". > > > > > > >> > I posted that failure stack below as well. > > > > > > >> > > > > > > > >> > Any ideas what the NoSuckFieldError is about? > > > > > > >> > > > > > > > >> > :geode-assembly:distributedTest > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > com.gemstone.gemfire.rest.internal.web.controllers.RestAPIsWithSSLDUnitTest > > > > > > >> > > testMutualAuthentication FAILED > > > > > > >> > java.lang.RuntimeException: unexpected exception > > > > > > >> > at > com.gemstone.gemfire.rest.internal.web.controllers. > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > RestAPIsWithSSLDUnitTest.validateConnection(RestAPIsWithSSLDUnitTest.java: > > > > > > >> > 495) > > > > > > >> > at > com.gemstone.gemfire.rest.internal.web.controllers. > > > > > > >> > RestAPIsWithSSLDUnitTest.testMutualAuthentication( > > > > > > >> > RestAPIsWithSSLDUnitTest.java:648) > > > > > > >> > > > > > > > >> > Caused by: > > > > > > >> > javax.net.ssl.SSLHandshakeException: Remote host > > closed > > > > > > >> > connection during handshake > > > > > > >> > at sun.security.ssl.SSLSocketImpl.readRecord( > > > > > > >> > SSLSocketImpl.java:992) > > > > > > >> > at sun.security.ssl.SSLSocketImpl.waitForClose( > > > > > > >> > SSLSocketImpl.java:1769) > > > > > > >> > at sun.security.ssl.HandshakeOutStream.flush( > > > > > > >> > HandshakeOutStream.java:124) > > > > > > >> > at > > sun.security.ssl.Handshaker.sendChangeCipherSpec( > > > > > > >> > Handshaker.java:1083) > > > > > > >> > at sun.security.ssl.ClientHandshaker. > > > > > > >> > sendChangeCipherAndFinish(ClientHandshaker.java:1222) > > > > > > >> > at > > > sun.security.ssl.ClientHandshaker.serverHelloDone( > > > > > > >> > ClientHandshaker.java:1134) > > > > > > >> > at > > sun.security.ssl.ClientHandshaker.processMessage( > > > > > > >> > ClientHandshaker.java:348) > > > > > > >> > at > > > > > > sun.security.ssl.Handshaker.processLoop(Handshaker.java: > > > > > > >> > 979) > > > > > > >> > at > > > > > sun.security.ssl.Handshaker.process_record(Handshaker. > > > > > > >> > java:914) > > > > > > >> > at sun.security.ssl.SSLSocketImpl.readRecord( > > > > > > >> > SSLSocketImpl.java:1062) > > > > > > >> > at > > > > > sun.security.ssl.SSLSocketImpl.performInitialHandshake( > > > > > > >> > SSLSocketImpl.java:1375) > > > > > > >> > at > sun.security.ssl.SSLSocketImpl.startHandshake( > > > > > > >> > SSLSocketImpl.java:1403) > > > > > > >> > at > sun.security.ssl.SSLSocketImpl.startHandshake( > > > > > > >> > SSLSocketImpl.java:1387) > > > > > > >> > at > > > > org.apache.http.conn.ssl.SSLConnectionSocketFactory. > > > > > > >> > createLayeredSocket(SSLConnectionSocketFactory.java:394) > > > > > > >> > at > > > > org.apache.http.conn.ssl.SSLConnectionSocketFactory. > > > > > > >> > connectSocket(SSLConnectionSocketFactory.java:353) > > > > > > >> > at > > > > > > org.apache.http.impl.conn.DefaultHttpClientConnectionOpe > > > > > > >> > rator.connect(DefaultHttpClientConnectionOperator.java:134) > > > > > > >> > at > > > > > > org.apache.http.impl.conn.PoolingHttpClientConnectionMan > > > > > > >> > ager.connect(PoolingHttpClientConnectionManager.java:353) > > > > > > >> > at > org.apache.http.impl.execchain.MainClientExec. > > > > > > >> > establishRoute(MainClientExec.java:380) > > > > > > >> > at > org.apache.http.impl.execchain.MainClientExec. > > > > > > >> > execute(MainClientExec.java:236) > > > > > > >> > at org.apache.http.impl.execchain.ProtocolExec. > > > > > > >> > execute(ProtocolExec.java:184) > > > > > > >> > at > > org.apache.http.impl.execchain.RetryExec.execute( > > > > > > >> > RetryExec.java:88) > > > > > > >> > at org.apache.http.impl.execchain.RedirectExec. > > > > > > >> > execute(RedirectExec.java:110) > > > > > > >> > at > > > > > > org.apache.http.impl.client.InternalHttpClient.doExecute( > > > > > > >> > InternalHttpClient.java:184) > > > > > > >> > at > > > > > > org.apache.http.impl.client.CloseableHttpClient.execute( > > > > > > >> > CloseableHttpClient.java:82) > > > > > > >> > at > > > > > > org.apache.http.impl.client.CloseableHttpClient.execute( > > > > > > >> > CloseableHttpClient.java:107) > > > > > > >> > at > > > com.gemstone.gemfire.rest.internal.web.controllers. > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > RestAPIsWithSSLDUnitTest.validateConnection(RestAPIsWithSSLDUnitTest.java: > > > > > > >> > 474) > > > > > > >> > ... 1 more > > > > > > >> > > > > > > > >> > Caused by: > > > > > > >> > java.io.EOFException: SSL peer shut down > > incorrectly > > > > > > >> > at > > > > > > >> sun.security.ssl.InputRecord.read(InputRecord.java:505) > > > > > > >> > at > sun.security.ssl.SSLSocketImpl.readRecord( > > > > > > >> > SSLSocketImpl.java:973) > > > > > > >> > ... 26 more > > > > > > >> > > > > > > > >> > java.lang.NoSuchFieldError: INSTANCE > > > > > > >> > > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:72) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:84) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:59) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:487) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:147) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:136) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:112) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:726) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > com.gemstone.gemfire.rest.internal.web.controllers.RestAPIsWithSSLDUnitTest.getSSLBasedHTTPClient(RestAPIsWithSSLDUnitTest.java:458) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > com.gemstone.gemfire.rest.internal.web.controllers.RestAPIsWithSSLDUnitTest.validateConnection(RestAPIsWithSSLDUnitTest.java:473) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > com.gemstone.gemfire.rest.internal.web.controllers.RestAPIsWithSSLDUnitTest.testSSLWithoutKeyStoreType(RestAPIsWithSSLDUnitTest.java:522) > > > > > > >> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > > > > > >> > at java.lang.reflect.Method.invoke(Method.java:497) > > > > > > >> > at junit.framework.TestCase.runTest(TestCase.java:176) > > > > > > >> > at junit.framework.TestCase.runBare(TestCase.java:141) > > > > > > >> > at junit.framework.TestResult$1.protect(TestResult.java:122) > > > > > > >> > at > > junit.framework.TestResult.runProtected(TestResult.java:142) > > > > > > >> > at junit.framework.TestResult.run(TestResult.java:125) > > > > > > >> > at junit.framework.TestCase.run(TestCase.java:129) > > > > > > >> > at junit.framework.TestSuite.runTest(TestSuite.java:252) > > > > > > >> > at junit.framework.TestSuite.run(TestSuite.java:247) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86) > > > > > > >> > at org.junit.runner.JUnitCore.run(JUnitCore.java:137) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) > > > > > > >> > at > > > > > > >> > > > > > > > com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74) > > > > > > >> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > > > > > > >> > at > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > > > > > >> > at java.lang.reflect.Method.invoke(Method.java:497) > > > > > > >> > at > > > > > > > > com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > -John > > > > > 503-504-8657 > > > > > john.blum10101 (skype) > > > > > > > > > > > > > > > > > > > > > -- > > > -John > > > 503-504-8657 > > > john.blum10101 (skype) > > > > > > -- -John 503-504-8657 john.blum10101 (skype)
