Skip to content

Commit f60e655

Browse files
Merge pull request #253 from codelerity/test-fixes
Update tests to fix errors logged by GStreamer.
2 parents e014c64 + e518b9f commit f60e655

File tree

8 files changed

+66
-42
lines changed

8 files changed

+66
-42
lines changed

.github/workflows/maven.yml

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,56 +8,78 @@ on:
88

99
jobs:
1010

11-
test-baseline:
11+
# test-baseline:
12+
#
13+
# runs-on: ubuntu-16.04
14+
#
15+
# steps:
16+
# - name: Checkout
17+
# uses: actions/checkout@v2
18+
#
19+
# - name: Set up JDK 1.8
20+
# uses: actions/setup-java@v1
21+
# with:
22+
# java-version: 1.8
23+
#
24+
# - name: Install GStreamer
25+
# run: sudo apt-get update && sudo apt-get install gstreamer1.0-plugins-good
26+
#
27+
# - name: Build with Maven
28+
# run: mvn -B verify --file pom.xml
29+
30+
test-1-14:
1231

13-
runs-on: ubuntu-16.04
32+
runs-on: ubuntu-18.04
1433

1534
steps:
1635
- name: Checkout
17-
uses: actions/checkout@v2
36+
uses: actions/checkout@v3
1837

1938
- name: Set up JDK 1.8
20-
uses: actions/setup-java@v1
39+
uses: actions/setup-java@v3
2140
with:
22-
java-version: 1.8
41+
java-version: '8'
42+
distribution: 'temurin'
2343

2444
- name: Install GStreamer
2545
run: sudo apt-get update && sudo apt-get install gstreamer1.0-plugins-good
2646

2747
- name: Build with Maven
2848
run: mvn -B verify --file pom.xml
2949

30-
test-1-14:
50+
test-1-16:
3151

32-
runs-on: ubuntu-18.04
52+
runs-on: ubuntu-20.04
3353

3454
steps:
3555
- name: Checkout
36-
uses: actions/checkout@v2
56+
uses: actions/checkout@v3
3757

3858
- name: Set up JDK 1.8
39-
uses: actions/setup-java@v1
59+
uses: actions/setup-java@v3
4060
with:
41-
java-version: 1.8
61+
java-version: '8'
62+
distribution: 'temurin'
4263

4364
- name: Install GStreamer
44-
run: sudo apt-get update && sudo apt-get install gstreamer1.0-plugins-good
65+
run: sudo apt-get update && sudo apt-get install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad
4566

4667
- name: Build with Maven
4768
run: mvn -B verify --file pom.xml
48-
49-
test-1-16:
5069

51-
runs-on: ubuntu-20.04
70+
test-1-20:
71+
72+
runs-on: ubuntu-22.04
5273

5374
steps:
5475
- name: Checkout
55-
uses: actions/checkout@v2
76+
uses: actions/checkout@v3
5677

5778
- name: Set up JDK 1.8
58-
uses: actions/setup-java@v1
79+
uses: actions/setup-java@v3
5980
with:
60-
java-version: 1.8
81+
java-version: '8'
82+
distribution: 'temurin'
6183

6284
- name: Install GStreamer
6385
run: sudo apt-get update && sudo apt-get install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
<dependency>
7575
<groupId>junit</groupId>
7676
<artifactId>junit</artifactId>
77-
<version>4.13.1</version>
77+
<version>4.13.2</version>
7878
<scope>test</scope>
7979
</dependency>
8080
<dependency>
@@ -107,7 +107,7 @@
107107
<plugin>
108108
<groupId>org.apache.maven.plugins</groupId>
109109
<artifactId>maven-surefire-plugin</artifactId>
110-
<version>2.22.2</version>
110+
<version>3.0.0-M7</version>
111111
<configuration>
112112
<!--<skipTests>true</skipTests>-->
113113
<forkCount>1</forkCount>

src/org/freedesktop/gstreamer/lowlevel/GlibAPI.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ interface GDestroyNotify extends Callback {
106106
int g_timeout_add_full(int priority, int interval, GSourceFunc function,
107107
Pointer data, GDestroyNotify notify);
108108
int g_timeout_add_seconds(int interval, GSourceFunc function, Pointer data);
109+
GstAPI.GErrorStruct g_error_new(int quark, int code, String message);
109110
void g_error_free(Pointer error);
110111
void g_error_free(GstAPI.GErrorStruct error);
111112

src/org/freedesktop/gstreamer/query/AllocationQuery.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019 Neil C Smith
2+
* Copyright (c) 2022 Neil C Smith
33
* Copyright (c) 2016 Christophe Lafolet
44
*
55
* This file is part of gstreamer-java.
@@ -25,7 +25,6 @@
2525
import org.freedesktop.gstreamer.lowlevel.GstQueryAPI;
2626

2727
import com.sun.jna.Pointer;
28-
import org.freedesktop.gstreamer.glib.NativeObject;
2928
import org.freedesktop.gstreamer.glib.Natives;
3029

3130
/**
@@ -45,10 +44,7 @@ public class AllocationQuery extends Query {
4544
* @param init initialization data.
4645
*/
4746
AllocationQuery(Initializer init) {
48-
// special case : no ref shall be added
49-
// the allocationQuery is an in/out parameter during query notification
50-
// so, we shall keep query writable for add methods
51-
super(Natives.initializer(init.ptr.getPointer(), false, true));
47+
super(init);
5248
}
5349

5450
/**

test/org/freedesktop/gstreamer/BusTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.concurrent.atomic.AtomicInteger;
2424
import java.util.concurrent.atomic.AtomicLong;
2525
import java.util.concurrent.atomic.AtomicReference;
26+
import org.freedesktop.gstreamer.lowlevel.GlibAPI;
2627
import org.freedesktop.gstreamer.lowlevel.GstAPI.GErrorStruct;
2728
import org.freedesktop.gstreamer.message.EOSMessage;
2829
import org.freedesktop.gstreamer.message.Message;
@@ -136,14 +137,15 @@ public void errorMessage() {
136137
};
137138
pipe.getBus().connect(errorSignal);
138139

139-
GErrorStruct msg = new GErrorStruct();
140+
GErrorStruct msg = GlibAPI.GLIB_API.g_error_new(1, 1, "MSG");
140141
GSTELEMENT_API.gst_element_post_message(pipe.src,
141142
GSTMESSAGE_API.gst_message_new_error(pipe.src, msg, "testing error messages"));
142143
pipe.play().run();
143144
pipe.getBus().disconnect(errorSignal);
144145
pipe.dispose();
145146
assertTrue("ERROR signal not received", signalFired.get());
146147
assertEquals("Incorrect source object on signal", pipe.src, signalSource.get());
148+
GlibAPI.GLIB_API.g_error_free(msg);
147149
}
148150

149151
@Test
@@ -160,7 +162,7 @@ public void warningMessage() {
160162
};
161163
pipe.getBus().connect(signal);
162164

163-
GErrorStruct msg = new GErrorStruct();
165+
GErrorStruct msg = GlibAPI.GLIB_API.g_error_new(1, 1, "MSG");
164166
pipe.play();
165167
GSTELEMENT_API.gst_element_post_message(pipe.src,
166168
GSTMESSAGE_API.gst_message_new_warning(pipe.src, msg, "testing warning messages"));
@@ -169,6 +171,7 @@ public void warningMessage() {
169171
pipe.dispose();
170172
assertTrue("WARNING signal not received", signalFired.get());
171173
assertEquals("Incorrect source object on signal", pipe.src, signalSource.get());
174+
GlibAPI.GLIB_API.g_error_free(msg);
172175
}
173176

174177
@Test
@@ -185,7 +188,7 @@ public void infoMessage() {
185188
};
186189
pipe.getBus().connect(signal);
187190

188-
GErrorStruct msg = new GErrorStruct();
191+
GErrorStruct msg = GlibAPI.GLIB_API.g_error_new(1, 1, "MSG");
189192
pipe.play();
190193
GSTELEMENT_API.gst_element_post_message(pipe.src,
191194
GSTMESSAGE_API.gst_message_new_info(pipe.src, msg, "testing info messages"));
@@ -194,6 +197,7 @@ public void infoMessage() {
194197
pipe.dispose();
195198
assertTrue("INFO signal not received", signalFired.get());
196199
assertEquals("Incorrect source object on signal", pipe.src, signalSource.get());
200+
GlibAPI.GLIB_API.g_error_free(msg);
197201
}
198202

199203
@Test

test/org/freedesktop/gstreamer/PadTest.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ public void setUp() throws Exception {
6666
public void tearDown() throws Exception {
6767
}
6868

69-
// Does not work yet (<- this comment was here in the 0.10 code)
70-
// @Ignore("Didn't work in the 0.10 either by the comment so still ignored")
7169
@Test
7270
public void getPad() throws Exception {
7371
Element src = ElementFactory.make("fakesrc", "src");
@@ -78,26 +76,23 @@ public void getPad() throws Exception {
7876
assertNotNull("Could not get sink pad", sinkPad);
7977
src = null;
8078
sink = null;
81-
WeakReference<Pad> srcRef = new WeakReference<Pad>(srcPad);
82-
WeakReference<Pad> sinkRef = new WeakReference<Pad>(sinkPad);
79+
WeakReference<Pad> srcRef = new WeakReference<>(srcPad);
80+
WeakReference<Pad> sinkRef = new WeakReference<>(sinkPad);
8381
srcPad = null;
8482
sinkPad = null;
8583
assertTrue("Src pad not garbage collected", GCTracker.waitGC(srcRef));
8684
assertTrue("Sink pad not garbage collected", GCTracker.waitGC(sinkRef));
8785
}
8886

8987
@Test
90-
public void padLink()
91-
throws Exception {
88+
public void padLink() throws Exception {
9289
Element src = ElementFactory.make("fakesrc", "src");
9390
Element sink = ElementFactory.make("fakesink", "src");
9491
Pad srcPad = src.getStaticPad("src");
9592
Pad sinkPad = sink.getStaticPad("sink");
9693
srcPad.link(sinkPad);
9794
}
9895

99-
// @Ignore("This seems to fail because gst1.0 doesn't actually send the event because pads " +
100-
// "are now created in FLUSHING state")
10196
@Test
10297
public void addEventProbe() {
10398
Element elem = ElementFactory.make("identity", "src");
@@ -263,6 +258,9 @@ public PadProbeReturn dataReceived(Pad pad, Buffer buffer) {
263258
// push data
264259
res = src.push(buf2);
265260
assertNotSame("data_prober.probeData() should not have been called", buf2, b.get());
261+
262+
elem.stop();
263+
266264
}
267265

268266
@Test
@@ -278,8 +276,9 @@ public void addProbe_Data() {
278276
Pad.PROBE probe = (Pad pad, PadProbeInfo info) -> {
279277
assertTrue("Info type does not include buffer",
280278
info.getType().contains(PadProbeType.BUFFER));
281-
assertTrue(info.getEvent() == null);
282-
assertTrue(info.getQuery() == null);
279+
// These cause assertion messages to be logged by GStreamer
280+
// assertTrue(info.getEvent() == null);
281+
// assertTrue(info.getQuery() == null);
283282
b.set(info.getBuffer());
284283
return PadProbeReturn.OK;
285284
};
@@ -299,6 +298,9 @@ public void addProbe_Data() {
299298
// push data
300299
res = src.push(buf2);
301300
assertNotSame("Probe (Data) should not have been called", buf2, b.get());
301+
302+
elem.stop();
303+
302304
}
303305

304306
@Test
@@ -330,7 +332,6 @@ public void addProbe_Idle() {
330332
public void addProbe_Query() {
331333
ProbeTester.test(PadProbeType.QUERY_BOTH, info -> {
332334
Query q = info.getQuery();
333-
// System.out.println(q.getStructure());
334335
return q instanceof AllocationQuery;
335336
});
336337

test/org/freedesktop/gstreamer/event/EventTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public static void tearDownClass() throws Exception {
183183
assertTrue("Event ref not collected after TagList is unreferenced", GCTracker.waitGC(evRef));
184184
}
185185
@Test public void Event_testGC() throws Exception {
186-
Event ev = new LatencyEvent(ClockTime.NONE);
186+
Event ev = new LatencyEvent(100);
187187
@SuppressWarnings("unused")
188188
Structure s = ev.getStructure();
189189
WeakReference<Event> evRef = new WeakReference<Event>(ev);

test/org/freedesktop/gstreamer/lowlevel/ReferenceManagerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public boolean waitGC(Reference<? extends Object> ref) throws InterruptedExcepti
7070

7171
@Test public void testReference() throws Exception {
7272
Object ref = new Object();
73-
Caps target = new Caps("video/x-raw-rgb");
73+
Caps target = new Caps("video/x-raw");
7474
ReferenceManager.addKeepAliveReference(ref, target);
7575
WeakReference<Object> targetRef = new WeakReference<Object>(target);
7676
target = null;
@@ -81,7 +81,7 @@ public boolean waitGC(Reference<? extends Object> ref) throws InterruptedExcepti
8181
@Test public void testMultipleReferences() throws Exception {
8282
Object ref1 = new Object();
8383
Object ref2 = new Object();
84-
Caps target = new Caps("video/x-raw-rgb");
84+
Caps target = new Caps("video/x-raw");
8585
ReferenceManager.addKeepAliveReference(ref1, target);
8686
ReferenceManager.addKeepAliveReference(ref2, target);
8787
WeakReference<Object> targetRef = new WeakReference<Object>(target);

0 commit comments

Comments
 (0)