Using loggable in the topology

This commit is contained in:
arielvalentin 2014-08-11 22:19:34 -04:00
parent fde7148ee1
commit 02c79c9282
2 changed files with 16 additions and 6 deletions

View File

@ -1,6 +1,7 @@
require 'java'
require 'red_storm/configuration'
require 'red_storm/configurator'
require 'red_storm/loggable'
java_import 'backtype.storm.topology.TopologyBuilder'
java_import 'backtype.storm.generated.SubmitOptions'
@ -11,8 +12,8 @@ module RedStorm
class TopologyDefinitionError < StandardError; end
class Topology
include Loggable
attr_reader :cluster # LocalCluster reference usable in on_submit block, for example
DEFAULT_SPOUT_PARALLELISM = 1
DEFAULT_BOLT_PARALLELISM = 1
@ -101,10 +102,6 @@ module RedStorm
end
end
def self.log
@log ||= Java::OrgSlf4j::LoggerFactory.get_logger(self.name.gsub(/::/,'.'))
end
# def self.spout(spout_class, contructor_args = [], options = {}, &spout_block)
def self.spout(spout_class, *args, &spout_block)
set_topology_class!

View File

@ -65,6 +65,19 @@ describe RedStorm::SimpleTopology do
RedStorm::Configuration.topology_class.name.should == "Topology1"
end
it "should proxy to storm slf4j logger" do
logger = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Topology1").and_return(logger)
logger.should_receive(:info).with("test")
RedStorm::Configuration.topology_class = nil
class Topology1 < RedStorm::SimpleTopology
log.info("test")
bolt BoltClass1 do
end
end
end
describe "interface" do
it "should implement topology proxy" do
topology = RedStorm::SimpleTopology.new
@ -651,4 +664,4 @@ describe RedStorm::SimpleTopology do
end
end
end
end