mirror of
https://github.com/fluent/fluentd-ui.git
synced 2025-08-07 14:57:18 +02:00
186 lines
4.9 KiB
Ruby
186 lines
4.9 KiB
Ruby
require "test_helper"
|
|
|
|
class FluentdTest < ActiveSupport::TestCase
|
|
module PathPermission
|
|
def self.included(base)
|
|
base.class_eval do
|
|
setup do
|
|
setup_target
|
|
end
|
|
|
|
sub_test_case "file exists" do
|
|
setup do
|
|
FileUtils.touch(@path)
|
|
end
|
|
|
|
teardown do
|
|
FileUtils.rm_f(@path)
|
|
end
|
|
|
|
test "writable" do
|
|
FileUtils.chmod(0600, @path)
|
|
@fluentd.check_permission(@column)
|
|
assert do
|
|
@fluentd.errors.blank?
|
|
end
|
|
end
|
|
|
|
test "not writable" do
|
|
FileUtils.chmod(0400, @path)
|
|
@fluentd.check_permission(@column)
|
|
assert do
|
|
@fluentd.errors.present?
|
|
end
|
|
assert_equal(I18n.t('activerecord.errors.messages.lack_write_permission'), @fluentd.errors[@column].first)
|
|
end
|
|
|
|
test "not readable" do
|
|
FileUtils.chmod(0200, @path)
|
|
@fluentd.check_permission(@column)
|
|
assert do
|
|
@fluentd.errors.present?
|
|
end
|
|
assert_equal(I18n.t('activerecord.errors.messages.lack_read_permission'), @fluentd.errors[@column].first)
|
|
end
|
|
|
|
test "is directory" do
|
|
@fluentd.__send__("#{@column}=", Rails.root + "tmp")
|
|
@fluentd.check_permission(@column)
|
|
assert do
|
|
@fluentd.errors.present?
|
|
end
|
|
assert_equal(I18n.t('activerecord.errors.messages.is_a_directory'), @fluentd.errors[@column].first)
|
|
end
|
|
end
|
|
|
|
sub_test_case "file not exists" do
|
|
setup do
|
|
@dir = File.dirname(@path)
|
|
FileUtils.rm_f(@path)
|
|
end
|
|
|
|
teardown do
|
|
FileUtils.chmod_R(0755, @dir)
|
|
end
|
|
|
|
test "writable" do
|
|
FileUtils.chmod(0700, @dir)
|
|
@fluentd.check_permission(@column)
|
|
assert do
|
|
@fluentd.errors.blank?
|
|
end
|
|
end
|
|
|
|
test "not writable" do
|
|
FileUtils.chmod(0500, @dir)
|
|
@fluentd.check_permission(@column)
|
|
assert do
|
|
@fluentd.errors.present?
|
|
end
|
|
assert_equal(I18n.t('activerecord.errors.messages.lack_write_permission'), @fluentd.errors[@column].first)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
setup do
|
|
@fluentd = FactoryBot.build(:fluentd)
|
|
end
|
|
|
|
teardown do
|
|
File.unlink(Fluentd.json_path) if File.exist?(Fluentd.json_path)
|
|
end
|
|
|
|
sub_test_case "#valid?" do
|
|
setup do
|
|
%w(pid_file log_file config_file).each do |column|
|
|
FileUtils.mkdir_p(File.dirname(@fluentd.__send__(column)))
|
|
FileUtils.touch(@fluentd.__send__(column))
|
|
end
|
|
end
|
|
|
|
data("fluentd" => ["fluentd_gem", true],
|
|
"not declared in Fluentd.variants" => ["foobar", false])
|
|
test "variant" do |(variant, result)|
|
|
@fluentd.variant = variant
|
|
assert_equal(result, @fluentd.valid?)
|
|
end
|
|
|
|
sub_test_case "pid_file" do
|
|
def setup_target
|
|
@column = :pid_file
|
|
@path = @fluentd.pid_file
|
|
end
|
|
include PathPermission
|
|
end
|
|
|
|
sub_test_case "log_file" do
|
|
def setup_target
|
|
@column = :log_file
|
|
@path = @fluentd.log_file
|
|
end
|
|
include PathPermission
|
|
end
|
|
|
|
sub_test_case "config_file" do
|
|
def setup_target
|
|
@column = :config_file
|
|
@path = @fluentd.config_file
|
|
end
|
|
include PathPermission
|
|
end
|
|
end
|
|
|
|
data("fluentd_gem" => { variant: "fluentd_gem", fluentd_gem?: true },
|
|
"td-agent" => { variant: "td-agent", fluentd_gem?: false })
|
|
test "variant" do |data|
|
|
@fluentd.variant = data[:variant]
|
|
assert_equal(data[:fluentd_gem?], @fluentd.fluentd_gem?)
|
|
@fluentd.load_settings_from_agent_default
|
|
expected = {
|
|
pid_file: @fluentd.agent.class.default_options[:pid_file],
|
|
log_file: @fluentd.agent.class.default_options[:log_file],
|
|
config_file: @fluentd.agent.class.default_options[:config_file]
|
|
}
|
|
actual = {
|
|
pid_file: @fluentd.pid_file,
|
|
log_file: @fluentd.log_file,
|
|
config_file: @fluentd.config_file,
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
data("fluentd_gem" => ["fluentd_gem", Fluentd::Agent::FluentdGem],
|
|
"td-agent" => ["td-agent", Fluentd::Agent::TdAgent])
|
|
test "#agent" do |(variant, klass)|
|
|
@fluentd.variant = variant
|
|
assert do
|
|
@fluentd.agent.instance_of?(klass)
|
|
end
|
|
end
|
|
|
|
sub_test_case "#ensure_default_config_file" do
|
|
setup do
|
|
@config_file = Rails.root + "tmp/test.conf"
|
|
@fluentd.config_file = @config_file
|
|
end
|
|
|
|
test "doesn't exist" do
|
|
File.unlink(@config_file) if File.exist?(@config_file)
|
|
@fluentd.save
|
|
assert do
|
|
File.exist?(@fluentd.config_file)
|
|
end
|
|
end
|
|
|
|
test "already exist" do
|
|
FileUtils.touch(@config_file)
|
|
@fluentd.save
|
|
assert do
|
|
File.exist?(@fluentd.config_file)
|
|
end
|
|
end
|
|
end
|
|
end
|