The only way to properly (& reliably) control that then is with the equivalent of a dependencyManagement declaration in Geode's Gradle build script for the test dependencies.
https://docs.gradle.org/current/userguide/dependency_management.html, section "*23.2.2. Managing transitive dependencies*" is a good place to start. Also, "*23.2.3. Resolve version conflicts*" talks about resolution strategies. On Wed, Mar 23, 2016 at 2:25 PM, Kirk Lund <[email protected]> wrote: > Yep, that's the way I built one of the two projects I currently have and it > does work better but it has duplicates of httpclient and httpcore. > > > On Wed, Mar 23, 2016 at 1:45 PM, John Blum <[email protected]> wrote: > > > I.e. ... "File" -> "New" -> "Project from Existing Sources..." -> <select > > your Geode working directory> -> "Import project from external model" -> > > "Gradle" > > > > I don't trust Gradle to do the right thing when setting up an IDE > > (especially as the IDE versions change). > > > > Disclaimer: I have not tried this recently, but I usually have more > success > > going this route. > > > > -John > > > > > > On Wed, Mar 23, 2016 at 1:40 PM, John Blum <[email protected]> wrote: > > > > > 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) > > > > > > > > > > > -- > > -John > > 503-504-8657 > > john.blum10101 (skype) > > > -- -John 503-504-8657 john.blum10101 (skype)
