Enable test suites

This commit is contained in:
Mat Booth 2018-12-05 17:55:23 +00:00
parent 6562da0e6c
commit c3fd0aa4b0
2 changed files with 194 additions and 3 deletions

View File

@ -4,7 +4,7 @@
Name: byte-buddy
Version: 1.9.5
Release: 2%{?dist}
Release: 3%{?dist}
Summary: Runtime code generation for the Java virtual machine
License: ASL 2.0
URL: http://bytebuddy.net/
@ -18,8 +18,15 @@ Patch1: avoid-bundling-asm.patch
BuildRequires: maven-local
%if %{without bootstrap}
BuildRequires: mvn(junit:junit)
BuildRequires: mvn(net.bytebuddy:byte-buddy)
BuildRequires: mvn(net.bytebuddy:byte-buddy-dep)
BuildRequires: mvn(net.bytebuddy:byte-buddy-maven-plugin)
BuildRequires: mvn(org.apache.maven:maven-compat)
BuildRequires: mvn(org.apache.maven.plugin-testing:maven-plugin-testing-harness)
BuildRequires: mvn(org.mockito:mockito-core)
BuildRequires: mvn(org.ow2.asm:asm-analysis)
BuildRequires: mvn(org.ow2.asm:asm-util)
%endif
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
BuildRequires: mvn(org.apache.maven:maven-core)
@ -79,6 +86,9 @@ find -name *.class -delete
# Cause pre-compiled stuff to be re-compiled
mv byte-buddy-dep/src/precompiled/java/net/bytebuddy/build/*.java \
byte-buddy-dep/src/main/java/net/bytebuddy/build
mkdir -p byte-buddy-dep/src/test/java/net/bytebuddy/test/precompiled/
mv byte-buddy-dep/src/precompiled/java/net/bytebuddy/test/precompiled/*.java \
byte-buddy-dep/src/test/java/net/bytebuddy/test/precompiled/
# Don't ship android or benchmark modules
%pom_disable_module byte-buddy-android
@ -110,9 +120,16 @@ sed -i -e '/SuppressFBWarnings/d' $(grep -lr SuppressFBWarnings)
%endif
%build
# Cannot run the test suite until mockito is updated in Fedora
# Cannot update mockito until this package is in Fedora
%if %{with bootstrap}
# Cannot run the test suite in bootstrap mode due to circular dep
# on self and mockito
%mvn_build -s -f -- -P'java8,!checks'
%else
# Ignore test failures, there seems to be something different about the
# bytecode of our recompiled test resources, expect 6 test failures in
# the byte-buddy-dep module
%mvn_build -s -- -P'java8,!checks' -Dsourcecode.test.version=1.8 -Dmaven.test.failure.ignore=true
%endif
%install
%mvn_install
@ -133,6 +150,9 @@ sed -i -e '/SuppressFBWarnings/d' $(grep -lr SuppressFBWarnings)
%license LICENSE NOTICE
%changelog
* Wed Dec 05 2018 Mat Booth <mat.booth@redhat.com> - 1.9.5-3
- Enable test suites
* Tue Dec 04 2018 Mat Booth <mat.booth@redhat.com> - 1.9.5-2
- Full, non-bootstrap build

View File

@ -287,3 +287,174 @@
- }
}
}
--- byte-buddy-agent/src/test/java/net/bytebuddy/test/utility/UnixSocketRule.java 2018-11-22 17:18:25.000000000 +0000
+++ /dev/null 2018-10-26 11:27:39.627999956 +0100
@@ -1,48 +0,0 @@
-package net.bytebuddy.test.utility;
-
-import org.junit.rules.MethodRule;
-import org.junit.runners.model.FrameworkMethod;
-import org.junit.runners.model.Statement;
-import org.newsclub.net.unix.AFUNIXSocket;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.util.logging.Logger;
-
-public class UnixSocketRule implements MethodRule {
-
- private final boolean enabled;
-
- public UnixSocketRule() {
- boolean enabled;
- try {
- Class.forName(AFUNIXSocket.class.getName(), true, UnixSocketRule.class.getClassLoader());
- enabled = true;
- } catch (Throwable ignored) {
- enabled = false;
- }
- this.enabled = enabled;
- }
-
- public Statement apply(Statement base, FrameworkMethod method, Object target) {
- return enabled || method.getAnnotation(Enforce.class) == null
- ? base
- : new NoOpStatement();
- }
-
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.METHOD)
- public @interface Enforce {
-
- }
-
- private static class NoOpStatement extends Statement {
-
- public void evaluate() {
- Logger.getLogger("net.bytebuddy").warning("Ignoring Unix sockets on this machine");
- }
- }
-}
-
--- byte-buddy-agent/src/test/java/net/bytebuddy/agent/VirtualMachineForHotSpotTest.java 2018-11-22 17:18:25.000000000 +0000
+++ /dev/null 2018-10-26 11:27:39.627999956 +0100
@@ -1,116 +0,0 @@
-package net.bytebuddy.agent;
-
-import net.bytebuddy.test.utility.UnixSocketRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.MethodRule;
-import org.mockito.InOrder;
-
-import java.io.IOException;
-
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.spy;
-
-public class VirtualMachineForHotSpotTest {
-
- @Rule
- public MethodRule unixSocketRule = new UnixSocketRule();
-
- @Test
- @UnixSocketRule.Enforce
- public void testAttachment() throws Exception {
- VirtualMachine.ForHotSpot virtualMachine = spy(new PseudoMachine(
- "0".getBytes("UTF-8"),
- new byte[]{10}
- ));
- virtualMachine.loadAgent("foo", "bar");
- InOrder order = inOrder(virtualMachine);
- order.verify(virtualMachine).connect();
- order.verify(virtualMachine).write("1".getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- order.verify(virtualMachine).write("load".getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- order.verify(virtualMachine).write("instrument".getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- order.verify(virtualMachine).write(Boolean.FALSE.toString().getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- order.verify(virtualMachine).write("foo=bar".getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- }
-
- @Test
- @UnixSocketRule.Enforce
- public void testAttachmentWithoutArgument() throws Exception {
- VirtualMachine.ForHotSpot virtualMachine = spy(new PseudoMachine(
- "0".getBytes("UTF-8"),
- new byte[]{10}
- ));
- virtualMachine.loadAgent("foo", null);
- InOrder order = inOrder(virtualMachine);
- order.verify(virtualMachine).connect();
- order.verify(virtualMachine).write("1".getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- order.verify(virtualMachine).write("load".getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- order.verify(virtualMachine).write("instrument".getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- order.verify(virtualMachine).write(Boolean.FALSE.toString().getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- order.verify(virtualMachine).write("foo".getBytes("UTF-8"));
- order.verify(virtualMachine).write(new byte[1]);
- }
-
- @Test(expected = IOException.class)
- @UnixSocketRule.Enforce
- public void testAttachmentIncompatibleProtocol() throws Exception {
- new PseudoMachine(
- "1".getBytes("UTF-8"),
- "0".getBytes("UTF-8"),
- "1".getBytes("UTF-8"),
- new byte[]{10}
- ).loadAgent("foo", null);
- }
-
- @Test(expected = IllegalStateException.class)
- @UnixSocketRule.Enforce
- public void testAttachmentUnknownError() throws Exception {
- new PseudoMachine(
- "1".getBytes("UTF-8"),
- new byte[]{10},
- "foo".getBytes("UTF-8")
- ).loadAgent("foo", null);
- }
-
- private static class PseudoMachine extends VirtualMachine.ForHotSpot {
-
- private final byte[][] read;
-
- private int index;
-
- private PseudoMachine(byte[]... read) {
- super(null);
- this.read = read;
- }
-
- public void detach() {
- /* empty */
- }
-
- protected void connect() {
- /* empty */
- }
-
- protected int read(byte[] buffer) {
- if (index == read.length) {
- return -1;
- }
- byte[] read = this.read[index++];
- System.arraycopy(read, 0, buffer, 0, read.length);
- return read.length;
- }
-
- protected void write(byte[] buffer) {
- /* empty */
- }
- }
-}
\ No newline at end of file