Plugin test failing

This might be a stupid question, but I can't seem to figure it out.

I'm trying to write a filter plugin for logstash and started by generating the default "Hello, world!" plugin and going through the basic development process. But I get stuck when running the rspec testing process.

These are the steps I followed:

  1. Downloaded logstash to my local machine from

  2. Ran the bin/logstash-plugin generate --type filter --name new-plugin --path <path to a new repo I created>

  3. Figured out that I needed JRuby, so I installed rvm then ran rvm install jruby and rvm use jruby.

  4. Finally got bundle install working.

  5. Woops! I still need rspec so I gem install rspec.

  6. Run bundle exec rspec, but I get the following result:

    1) LogStash::Filters::CleanJob Set to Hello World "{"message":"some text"}" when processed
        Got 0 failures and 2 other errors:
        1.1) Failure/Error: expect(subject).to include("message")
                undefined local variable or method `job_1' for #<LogStashHelper::TestPipeline:0x4975dda1>
            # (eval):8:in `<eval>'
            # <my-dir>/.rvm/gems/jruby- `initialize'
            # <my-dir>/.rvm/gems/jruby- `initialize'
            # <my-dir>/.rvm/gems/jruby- \`new_pipeline_from_string'
            # <my-dir>/.rvm/gems/jruby- `block in pipeline'
            # <my-dir>/.rvm/gems/jruby- `block in results'
            # <my-dir>/.rvm/gems/jruby- `block in subject'
            # ./spec/filters/clean-job_spec.rb:16:in `block in (root)'
            # <my-dir>/.rvm/gems/jruby- `block in (root)'
        1.2) Failure/Error: Unable to find (eval) to read failed line
                undefined local variable or method `job_1' for #<LogStashHelper::TestPipeline:0x5882b202>
            # (eval):8:in `<eval>'
            # <my-dir>/.rvm/gems/jruby- `initialize'
            # <my-dir>/.rvm/gems/jruby- `initialize'
            # <my-dir>/.rvm/gems/jruby- `new_pipeline_from_string'
            # <my-dir>/.rvm/gems/jruby- `block in pipeline'
            # <my-dir>/.rvm/gems/jruby- `block in sample'
            # <my-dir>/.rvm/gems/jruby- `block in (root)'

What could be causing this?


What does the generated code look like?

I just updated the config files. I messed a bit with the *_spec.rb file, but didn't get it to work.


# encoding: utf-8
require "logstash/filters/base"
require "logstash/namespace"

# This  filter will replace the contents of the default 
# message field with whatever you specify in the configuration.
# It is only intended to be used as an .
class LogStash::Filters::CleanJob < LogStash::Filters::Base

# Setting the config_name here is required. This is how you
# configure this filter from your Logstash config.
# filter {
#    {
#     message => "My message..."
#   }
# }
config_name "clean-job"

# Replace the message with this value.
config :message, :validate => :string, :default => "Hello World!"

def register
    # Add instance variables 
end # def register

def filter(event)

    if @message
    # Replace the event message with our message as configured in the
    # config file.
    event.set("message", @message)

    # filter_matched should go in the last line of our successful code
end # def filter
end # class LogStash::Filters::CleanJob


# encoding: utf-8
require_relative '../spec_helper'
require "logstash/filters/clean-job"

describe LogStash::Filters::CleanJob do
describe "Set to Hello World" do
    let(:config) do <<-CONFIG
    filter {
        clean-job {
        message => "Hello World"
    sample("message" => "some text") do
    expect(subject).to include("message")
    expect(subject.get('message')).to eq('Hello World')

logstash-filter-clean-job.gemspec do |s|          = 'logstash-filter-clean-job'
s.version       = '0.1.0'
s.licenses      = ['Apache-2.0']
s.summary       = 'A summary'
s.description   = 'A description'
s.homepage      = ''
s.authors       = ['mandi']         = ''
s.require_paths = ['lib']

# Files
s.files = Dir['lib/**/*','spec/**/*','vendor/**/*','*.gemspec','*.md','CONTRIBUTORS','Gemfile','LICENSE','NOTICE.TXT']
# Tests
s.test_files = s.files.grep(%r{^(test|spec|features)/})

# Special flag to let us know this is actually a logstash plugin
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "filter" }

# Gem dependencies
s.add_runtime_dependency "logstash-core-plugin-api", "~> 2.0"
s.add_development_dependency 'logstash-devutils'


source ''


This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.