Using loggable in the topology
This commit is contained in:
parent
fde7148ee1
commit
02c79c9282
|
@ -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!
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue