yannrichet/rsession

After i start rserver on my windows10, I run the test method error:

Closed this issue · 4 comments

After i start rserver In the RGui on my windows10, I run the test method

@Test
    public void testHardConcurrency() throws REXPMismatchException, InterruptedException {

and got the err in the console window as below:

"C:\Program Files\Java\jdk1.8.0_05\bin\java" -DR_HOME=d:\R\R-3.2.5\bin\x64 ... ...org.math.R.RsessionTest
JUnit version 4.0
R version 3.2.5 (2016-04-14)
tmpdir=D:\lianxi\lianxi-rstat\rsession\tmp
Rserve version 1.8-0

Time: 0
There was 1 failure:

  1. testHardConcurrency(org.math.R.RsessionTest)
    java.lang.NullPointerException
    at org.math.R.Rsession.(Rsession.java:439)
    at org.math.R.Rsession.newInstanceTry(Rsession.java:382)
    at org.math.R.RsessionTest.testHardConcurrency(RsessionTest.java:658)
    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:483)
    at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
    at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
    at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
    at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
    at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
    at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)
    at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
    at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
    at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
    at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
    at org.junit.internal.runners.CompositeRunner.run(CompositeRunner.java:29)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:121)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:100)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:91)
    at org.junit.runner.JUnitCore.runMain(JUnitCore.java:75)
    at org.junit.runner.JUnitCore.main(JUnitCore.java:42)
    at org.math.R.RsessionTest.main(RsessionTest.java:34)
    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:483)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

FAILURES!!!
Tests run: 1, Failures: 1

Process finished with exit code 1

Please help:

Can you retry without starting any RGUI ? Rsession is supposed to start it by itself. Also, check that no remaining Rserve is still alive in your process exporer.

oh,yes, I found that:

Rsession is supposed to start it by itself.

when pass RserverConf conf = new RserverConf(null, -1/* RserverConf.RserverDefaultPort/, null, null, prop);* to s = Rsession.newInstanceTry(l, conf); as code in 'public void setUp() {'

But ,when null was passed in the test report "java.lang.NullPointerException" and no new rserve process in the exporer ** as code in testHardConcurrency()

 //@Test
    public void testHardConcurrency() throws REXPMismatchException, InterruptedException {
        final int[] A = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        final Rsession[] R = new Rsession[A.length];
        for (int i = 0; i < R.length; i++) {
            R[i] = Rsession.newInstanceTry(new Logger() {

                public void println(String string, Level level) {
                    if (level == Level.INFO) {
                        System.out.println(string);
                    } else {
                        System.err.println(string);
                    }
                }

                public void close() {
                }
            }, null); ** // when null was passed in then the test report "java.lang.NullPointerException" and no new rserve process in the exporer **
        }

Maybe Passing null values is not correct? I want to know What functions do have when you pass a null value

ok, you can use
RserverConf conf = new RserverConf("localhost", 6311, mylogin, mypasswd, prop)
to reach your Rserve instance.
null values is supposed to startup a new Rserver which is not working for you, it seems.

Thank you