Hi Stuart,
this is the updated webrev:
http://cr.openjdk.java.net/~xiaofeya/8066085/webrev.02/. Please sponsor
this changeset for me.
Thank you very much,
-Felix
On 12/24/2014 1:01 PM, Stuart Marks wrote:
Hi Felix,
Good improvements. I think this is pretty close; I have just a few
minor comments.
* The test is named IIOPSanityTest but it's in a directory named
iiopCompilation. I don't think we need different names. There are many
test classes named "Foo" that reside in a directory named "foo"; I
think we should do the same here. I think keeping the directory name
"iiopCompilation" and renaming the class to "IIOPCompilation" makes
things a bit more descriptive.
* Declaring string constants like RMIC_PROGRAM, IIOP_OPTION, and
CP_OPTION doesn't really help things, since they're each used exactly
once, the string values are unlikely to change, and the symbolic names
are just derived from the string vaues. You might as well use string
literals directly in each place they're needed.
* Printing the command that's about to be executed is a good idea, but
the printf statement that prints the command has to be kept in synch
with the array containing the command and args. If the command were to
change, it'd be easy to forget to update the printf statement or to
get it wrong.
* I'll also observe that there is an overload of the ProcessBuilder
constructor that takes a List<String> instead of a String[]. Lists are
often easier to work with than arrays, and they have a toString()
method that can be used implicitly by print statements. This suggests
an alternative for constructing the rmic command line, something like
the following:
List<String> command = Arrays.asList(
rmicProgramStr, "-iiop", "-classpath", testClasses, classname);
System.out.println("Running command: " + command);
After you fix these up I think this will be ready to go in.
I can sponsor this changeset for you if you need a sponsor.
Thanks,
s'marks
On 12/19/14 1:56 AM, FELIX YANG wrote:
Hi Stuart,
please review the updated webrev:
http://cr.openjdk.java.net/~xiaofeya/8066085/webrev.01/
Thanks,
-Felix
On 12/12/2014 4:08 PM, Stuart Marks wrote:
On 12/11/14 8:41 PM, FELIX YANG wrote:
Hi all,
please review the fix to add a sanity checking for rmic -iiop
compiling.
Bug:
https://bugs.openjdk.java.net/browse/JDK-8066085
Webrev:
http://cr.openjdk.java.net/~xiaofeya/8066085/webrev.00/
Hi Felix,
Thanks for picking up the writing of this test. I have several
comments.
1. Usually we try to avoid naming tests after bug IDs. There are
such tests in
the suite but most tests have more descriptive names. I'd suggest
something
like "iiopSanityTest".
2. There are other rmic tests in jdk/test/sun/rmi/rmic; the test
should be
moved there (and the path to the TestLibrary updated correspondingly).
3. The test summary should be a bit more explicit. Instead of "a
sanity test
for rmic -iiop compiling" I'd suggest something like "Compiles a
PortableRemoteObject with rmic -iiop and ensures that stub and tie
classes are
generated."
4. When invoking rmic, you need to make sure to pass the -iiop option.
5. Add check for the _Tie class as well as the _Stub class. Not that
it really
matters, since we know these classes are in the unnamed package, but
the stub
and tie class files would end up in directories corresponding to
their package
names -- if they were in a named package.
6. In doTest(), the try/catch of InterruptedException and
IOException and call
to TestLibrary.bomb() is mostly unnecessary. (Yes, other RMI tests
do this,
and I've been removing it where appropriate. In the RMI test
library, the
bomb() call merely wraps and rethrows the exception, and doesn't
really add
any value. It's like calling fail() in a test-ng test.) In general
an uncaught
exception will cause a jtreg test to fail, so you might as well just
declare
the method with "throws Exception" and let them propagate. This
helps reduce
clutter.
7. Similarly I'm not sure it's necessary to check the classname
argument for
null; the failure should be apparent enough if classname is null.
But if you
think it's worth it, a concise way to null-check an argument is to use
Objects.requireNonNull().
8. The "rmiComplie" method is misnamed (or typo'd); I'd suggest
something like
"runRmic".
9. Changing the directory of the rmic subprocess is confusing,
because it
makes different parts of the program deal with different paths to
the same
files. In addition, switching directories to the test.classes
directory will
leave the stub/tie classes there, which could possibly confuse
future test
runs, since that directory isn't necessarily cleared between test runs.
The default working directory of jtreg tests is the "scratch"
directory, which
is cleared before each test run. Leaving the current directory as-is
when
running the subprocesses will write the generated stub/tie classes
to the
scratch directory, which is the right thing.
This implies that you'll need to add the -classpath argument and a
path to the
test.classes directory to the rmic command line.
Thanks,
s'marks