Skip to content

Commit

Permalink
TESTS: Fix RSpec CLI invocation
Browse files Browse the repository at this point in the history
  • Loading branch information
original-brownbear committed Jun 7, 2018
1 parent 3c30459 commit 76bb371
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 61 deletions.
26 changes: 0 additions & 26 deletions logstash-core/spec/logstash/event_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -145,32 +145,6 @@
expect(e.get("foo").to_f).to be_within(0.1).of(time.to_f)
end

it "should set XXJavaProxy Jackson crafted" do
proxy = org.logstash.RspecTestUtils.getMapFixtureJackson()
# proxy is {"string": "foo", "int": 42, "float": 42.42, "array": ["bar","baz"], "hash": {"string":"quux"} }
e = LogStash::Event.new()
e.set("[proxy]", proxy)
expect(e.get("[proxy][string]")).to eql("foo")
expect(e.get("[proxy][int]")).to eql(42)
expect(e.get("[proxy][float]")).to eql(42.42)
expect(e.get("[proxy][array][0]")).to eql("bar")
expect(e.get("[proxy][array][1]")).to eql("baz")
expect(e.get("[proxy][hash][string]")).to eql("quux")
end

it "should set XXJavaProxy hand crafted" do
proxy = org.logstash.RspecTestUtils.getMapFixtureHandcrafted()
# proxy is {"string": "foo", "int": 42, "float": 42.42, "array": ["bar","baz"], "hash": {"string":"quux"} }
e = LogStash::Event.new()
e.set("[proxy]", proxy)
expect(e.get("[proxy][string]")).to eql("foo")
expect(e.get("[proxy][int]")).to eql(42)
expect(e.get("[proxy][float]")).to eql(42.42)
expect(e.get("[proxy][array][0]")).to eql("bar")
expect(e.get("[proxy][array][1]")).to eql("baz")
expect(e.get("[proxy][hash][string]")).to eql("quux")
end

it "should fail on non UTF-8 encoding" do
# e = LogStash::Event.new
# s1 = "\xE0 Montr\xE9al".force_encoding("ISO-8859-1")
Expand Down
35 changes: 0 additions & 35 deletions logstash-core/src/test/java/org/logstash/RspecTestUtils.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package org.logstash.ext;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.assertj.core.api.Assertions;
import org.jruby.RubyString;
import org.jruby.javasupport.JavaUtil;
import org.jruby.runtime.ThreadContext;
import org.jruby.runtime.builtin.IRubyObject;
import org.junit.Test;
import org.logstash.ObjectMappers;
import org.logstash.RubyUtil;

/**
* Tests for {@link JrubyEventExtLibrary.RubyEvent}.
*/
public final class JrubyEventExtLibraryTest {

@Test
public void shouldSetJavaProxy() throws IOException {
for (final Object proxy : Arrays.asList(getMapFixtureJackson(), getMapFixtureHandcrafted())) {
final ThreadContext context = RubyUtil.RUBY.getCurrentContext();
final JrubyEventExtLibrary.RubyEvent event =
JrubyEventExtLibrary.RubyEvent.newRubyEvent(context.runtime);
event.ruby_set_field(
context, rubyString("[proxy]"),
JavaUtil.convertJavaToUsableRubyObject(context.runtime, proxy)
);
final Map<String, IRubyObject> expected = new HashMap<>();
expected.put("[string]", rubyString("foo"));
expected.put("[int]", context.runtime.newFixnum(42));
expected.put("[float]", context.runtime.newFloat(42.42));
expected.put("[array][0]", rubyString("bar"));
expected.put("[array][1]", rubyString("baz"));
expected.put("[hash][string]", rubyString("quux"));
expected.forEach(
(key, value) -> Assertions.assertThat(
event.ruby_get_field(context, rubyString("[proxy]" + key))
).isEqualTo(value)
);
}
}

private static RubyString rubyString(final String java) {
return RubyUtil.RUBY.newString(java);
}

private static Object getMapFixtureJackson() throws IOException {
StringBuilder json = new StringBuilder();
json.append('{');
json.append("\"string\": \"foo\", ");
json.append("\"int\": 42, ");
json.append("\"float\": 42.42, ");
json.append("\"array\": [\"bar\",\"baz\"], ");
json.append("\"hash\": {\"string\":\"quux\"} }");
return ObjectMappers.JSON_MAPPER.readValue(json.toString(), Object.class);
}

private static Map<String, Object> getMapFixtureHandcrafted() {
HashMap<String, Object> inner = new HashMap<>();
inner.put("string", "quux");
HashMap<String, Object> map = new HashMap<>();
map.put("string", "foo");
map.put("int", 42);
map.put("float", 42.42);
map.put("array", Arrays.asList("bar", "baz"));
map.put("hash", inner);
return map;
}
}

0 comments on commit 76bb371

Please sign in to comment.