fluentd-ui 1.0.0.alpha.3 → 1.0.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of fluentd-ui might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.eslintrc.js +45 -0
- data/.travis.yml +17 -3
- data/Gemfile +2 -2
- data/Gemfile.lock +62 -63
- data/README.md +11 -0
- data/app/controllers/api/config_definitions_controller.rb +41 -17
- data/app/controllers/concerns/setting_concern.rb +0 -4
- data/app/controllers/fluentd/settings/in_tail_controller.rb +1 -1
- data/app/form_builders/fluentd_form_builder.rb +18 -6
- data/app/javascript/packs/application.js +20 -20
- data/app/javascript/packs/aws_credential.js +61 -0
- data/app/javascript/packs/codemirror.js +33 -37
- data/app/javascript/packs/config_field.js +93 -0
- data/app/javascript/packs/fluent_log.js +10 -9
- data/app/javascript/packs/in_tail_parse.js +77 -76
- data/app/javascript/packs/nested_settings.js +17 -16
- data/app/javascript/packs/notification.js +14 -14
- data/app/javascript/packs/out_forward_setting.js +14 -0
- data/app/javascript/packs/out_s3_setting.js +14 -0
- data/app/javascript/packs/owned_plugin_form.js +60 -57
- data/app/javascript/packs/parser_multiline_form.js +15 -14
- data/app/javascript/packs/plugin_setting.js +13 -13
- data/app/javascript/packs/settings.js +23 -18
- data/app/javascript/packs/transport_config.js +62 -0
- data/app/javascript/packs/transport_section.js +72 -0
- data/app/javascript/packs/treeview.js +11 -10
- data/app/models/concerns/fluentd/setting/configurable.rb +1 -3
- data/app/models/concerns/fluentd/setting/plugin.rb +29 -1
- data/app/models/concerns/fluentd/setting/plugin_config.rb +32 -8
- data/app/models/concerns/fluentd/setting/plugin_parameter.rb +74 -21
- data/app/models/concerns/fluentd/setting/registry_loader.rb +38 -0
- data/app/models/concerns/fluentd/setting/section_config.rb +52 -0
- data/app/models/concerns/fluentd/setting/section_parser.rb +25 -18
- data/app/models/fluentd/setting/in_forward.rb +29 -10
- data/app/models/fluentd/setting/in_syslog.rb +6 -6
- data/app/models/fluentd/setting/out_forward.rb +15 -3
- data/app/models/fluentd/setting/out_mongo.rb +0 -11
- data/app/models/fluentd/setting/out_s3.rb +17 -3
- data/app/models/fluentd/setting/out_tdlog.rb +3 -2
- data/app/models/fluentd/setting/section.rb +4 -0
- data/app/models/fluentd/setting/type/object.rb +17 -0
- data/app/views/fluentd/settings/in_forward/_form.html.haml +5 -3
- data/app/views/fluentd/settings/out_forward/_form.html.haml +18 -0
- data/app/views/fluentd/settings/out_s3/_form.html.haml +18 -0
- data/app/views/shared/settings/_form.html.haml +14 -10
- data/app/views/shared/settings/show.html.haml +2 -2
- data/app/views/shared/vue/_aws_credential.html.haml +22 -0
- data/app/views/shared/vue/_config_field.html.haml +49 -0
- data/app/views/shared/vue/_out_forward_setting.html.haml +13 -0
- data/app/views/shared/vue/_out_s3_setting.html.haml +19 -0
- data/app/views/shared/vue/_owned_plugin_form.html.haml +8 -48
- data/app/views/shared/vue/_transport_config.html.haml +20 -0
- data/app/views/shared/vue/_transport_section.html.haml +30 -0
- data/config/initializers/dig.rb +8 -0
- data/config/initializers/dummy_logger.rb +1 -0
- data/config/initializers/types.rb +2 -1
- data/config/locales/translation_ja.yml +2 -2
- data/fluentd-ui.gemspec +1 -0
- data/gemfiles/ruby2.2.gemfile +28 -0
- data/lib/dummy_logger.rb +13 -0
- data/lib/fluentd-ui/version.rb +1 -1
- data/package.json +5 -0
- data/spec/features/fluentd/setting/in_forward_spec.rb +1 -2
- data/spec/features/fluentd/setting/in_http_spec.rb +1 -2
- data/spec/features/fluentd/setting/in_monitor_agent_spec.rb +1 -2
- data/spec/features/fluentd/setting/out_forward_spec.rb +3 -5
- data/spec/features/fluentd/setting/out_stdout_spec.rb +1 -2
- data/spec/features/out_elasticsearch_spec.rb +3 -3
- data/spec/features/out_forward_spec.rb +6 -5
- data/spec/features/out_tdlog_spec.rb +3 -2
- data/spec/features/shared_examples/configurable_daemon_settings.rb +2 -2
- data/spec/features/source_and_output_spec.rb +2 -0
- data/spec/models/fluentd/setting/in_forward_spec.rb +65 -9
- data/spec/models/fluentd/setting/in_syslog_spec.rb +12 -7
- data/spec/models/fluentd/setting/in_tail_spec.rb +6 -0
- data/spec/models/fluentd/setting/out_mongo_spec.rb +2 -3
- data/spec/models/fluentd/setting/out_tdlog_spec.rb +1 -2
- data/spec/spec_helper.rb +5 -0
- data/yarn.lock +466 -12
- metadata +90 -39
- data/app/helpers/settings_helper.rb +0 -144
- data/app/models/concerns/fluentd/setting/section_validator.rb +0 -21
- data/app/views/fluentd/settings/_form.html.haml +0 -43
@@ -6,6 +6,6 @@
|
|
6
6
|
= raw t("fluentd.settings.#{target_plugin_name}.option_guide")
|
7
7
|
|
8
8
|
- if lookup_context.exists?("form", controller.controller_path, true)
|
9
|
-
= render "#{controller.controller_path}/form"
|
9
|
+
= render "#{controller.controller_path}/form", setting: @setting, fluentd: @fluentd
|
10
10
|
- else
|
11
|
-
= render "shared/settings/form"
|
11
|
+
= render "shared/settings/form", setting: @setting, fluentd: @fluentd
|
@@ -0,0 +1,22 @@
|
|
1
|
+
= render "shared/vue/config_field"
|
2
|
+
|
3
|
+
%script{type: "text/x-template", id: "vue-aws-credential"}
|
4
|
+
.form-group.card.bg-light.mb-3
|
5
|
+
.card-body
|
6
|
+
%label{"for" => "aws-credential"}
|
7
|
+
AWS credential
|
8
|
+
%select{"id" => "aws-credential",
|
9
|
+
"class" => "form-control mb-3",
|
10
|
+
"v-model" => "credentialType",
|
11
|
+
"v-on:change" => "onChange"}
|
12
|
+
%option{"v-for" => "option in options",
|
13
|
+
"v-bind:value" => "option",
|
14
|
+
"v-bind:selected" => "credentialType===option"}
|
15
|
+
{{ option }}
|
16
|
+
%template{"v-for" => "option in credentialOptions"}
|
17
|
+
%template{"v-if" => 'credentialType==="simple"'}
|
18
|
+
%config-field{"v-bind:plugin-type" => '"output"',
|
19
|
+
"v-bind:option" => "option"}
|
20
|
+
%template(v-else)
|
21
|
+
%config-field{"v-bind:plugin-type" => 'credentialType',
|
22
|
+
"v-bind:option" => "option"}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
%script{type: "text/x-template", id: "vue-config-field"}
|
2
|
+
.form-group
|
3
|
+
%template{"v-if" => 'option.type==="enum"'}
|
4
|
+
%label{"v-bind:for" => "inputId(pluginType, option)",
|
5
|
+
"data-toggle" => "tooltip",
|
6
|
+
"data-placement" => "right",
|
7
|
+
"v-bind:title" => "option.desc"}
|
8
|
+
{{ option.name | humanize }}
|
9
|
+
%select{"v-bind:id" => "inputId(pluginType, option)",
|
10
|
+
"v-bind:name" => "inputName(pluginType, option)",
|
11
|
+
"class" => "form-control"}
|
12
|
+
%option{"v-for" => "item in option.list",
|
13
|
+
"v-bind:value" => "item",
|
14
|
+
"v-bind:selected" => "option.default === item"}
|
15
|
+
{{ item }}
|
16
|
+
%template{"v-else-if" => 'option.type==="bool"'}
|
17
|
+
%input{"v-bind:id" => "inputId(pluginType, option)",
|
18
|
+
"v-bind:name" => "inputName(pluginType, option)",
|
19
|
+
"v-bind:checked" => "checked(option.default)",
|
20
|
+
"type" => "checkbox"}
|
21
|
+
%label{"v-bind:for" => "inputId(pluginType, option)",
|
22
|
+
"data-toggle" => "tooltip",
|
23
|
+
"data-placement" => "right",
|
24
|
+
"v-bind:title" => "option.desc"}
|
25
|
+
{{ option.name | humanize }}
|
26
|
+
%template(v-else)
|
27
|
+
%label{"v-bind:for" => "inputId(pluginType, option)",
|
28
|
+
"data-toggle" => "tooltip",
|
29
|
+
"data-placement" => "right",
|
30
|
+
"v-bind:title" => "option.desc"}
|
31
|
+
{{ option.name | humanize }}
|
32
|
+
%template{"v-if" => 'option.name === "expression"'}
|
33
|
+
%input{"v-bind:id" => "inputId(pluginType, option)",
|
34
|
+
"v-bind:name" => "inputName(pluginType, option)",
|
35
|
+
"v-model.lazy" => "expression",
|
36
|
+
"type" => "text",
|
37
|
+
"class" => "form-control"}
|
38
|
+
%template{"v-else-if" => 'option.name === "time_format"'}
|
39
|
+
%input{"v-bind:id" => "inputId(pluginType, option)",
|
40
|
+
"v-bind:name" => "inputName(pluginType, option)",
|
41
|
+
"v-model.lazy" => "timeFormat",
|
42
|
+
"type" => "text",
|
43
|
+
"class" => "form-control"}
|
44
|
+
%template(v-else)
|
45
|
+
%input{"v-bind:id" => "inputId(pluginType, option)",
|
46
|
+
"v-bind:name" => "inputName(pluginType, option)",
|
47
|
+
"v-model.lazy" => "textValue",
|
48
|
+
"type" => "text",
|
49
|
+
"class" => "form-control"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
- add_javascript_pack_tag("out_forward_setting")
|
2
|
+
|
3
|
+
= render "shared/vue/owned_plugin_form"
|
4
|
+
= render "shared/vue/transport_config"
|
5
|
+
|
6
|
+
#out-forward-setting
|
7
|
+
%owned-plugin-form{"v-bind:id" => "'buffer-section'",
|
8
|
+
"v-bind:options-json" => "'#{Fluent::Plugin::BUFFER_REGISTRY.map.keys.to_json}'",
|
9
|
+
"v-bind:initial-plugin-name" => "'#{setting.buffer_type}'",
|
10
|
+
"v-bind:plugin-type" => "'buffer'",
|
11
|
+
"v-bind:plugin-label" => "'Buffer'"}
|
12
|
+
%transport-config{"v-bind:plugin-type" => "'#{setting.plugin_type}'",
|
13
|
+
"v-bind:plugin-name" => "'#{setting.plugin_name}'"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
- add_javascript_pack_tag("out_s3_setting")
|
2
|
+
|
3
|
+
= render "shared/vue/aws_credential"
|
4
|
+
= render "shared/vue/owned_plugin_form"
|
5
|
+
|
6
|
+
#out-s3-setting
|
7
|
+
%owned-plugin-form{"v-bind:id" => "'buffer-section'",
|
8
|
+
"v-bind:options-json" => "'#{Fluent::Plugin::BUFFER_REGISTRY.map.keys.to_json}'",
|
9
|
+
"v-bind:initial-plugin-name" => "'#{setting.buffer_type}'",
|
10
|
+
"v-bind:plugin-type" => "'buffer'",
|
11
|
+
"v-bind:plugin-label" => "'Buffer'"}
|
12
|
+
%owned-plugin-form{"v-bind:id" => "'format-section'",
|
13
|
+
"v-bind:options-json" => "'#{Fluent::Plugin::FORMATTER_REGISTRY.map.keys.to_json}'",
|
14
|
+
"v-bind:initial-plugin-name" => "'#{setting.format_type}'",
|
15
|
+
"v-bind:plugin-type" => "'format'",
|
16
|
+
"v-bind:plugin-label" => "'Format'"}
|
17
|
+
%aws-credential{"v-bind:id" => "'aws-credential'",
|
18
|
+
"v-bind:plugin-type" => "'output'",
|
19
|
+
"v-bind:plugin-name" => "'s3'"}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
= render "shared/vue/parser_multiline_form"
|
2
|
+
= render "shared/vue/config_field"
|
2
3
|
|
3
4
|
%script{type: "text/x-template", id: "vue-owned-plugin-form"}
|
4
5
|
.form-group.card.bg-light.mb-3{"v-bind:id" => "id"}
|
@@ -18,51 +19,10 @@
|
|
18
19
|
"v-bind:plugin-type" => "pluginType",
|
19
20
|
"v-bind:common-options" => "commonOptions",
|
20
21
|
"v-on:change-formats" => "onChangeFormats"}
|
21
|
-
|
22
|
-
%
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
%select{"v-bind:id" => "inputId(pluginType, option)",
|
29
|
-
"v-bind:name" => "inputName(pluginType, option)",
|
30
|
-
"class" => "form-control"}
|
31
|
-
%option{"v-for" => "item in option.list",
|
32
|
-
"v-bind:value" => "item",
|
33
|
-
"v-bind:selected" => "option.default === item"}
|
34
|
-
{{ item }}
|
35
|
-
%template{"v-else-if" => 'option.type==="bool"'}
|
36
|
-
%input{"v-bind:id" => "inputId(pluginType, option)",
|
37
|
-
"v-bind:name" => "inputName(pluginType, option)",
|
38
|
-
"v-bind:checked" => "checked(option.default)",
|
39
|
-
"type" => "checkbox"}
|
40
|
-
%label{"v-bind:for" => "inputId(pluginType, option)",
|
41
|
-
"data-toggle" => "tooltip",
|
42
|
-
"data-placement" => "right",
|
43
|
-
"v-bind:title" => "option.desc"}
|
44
|
-
{{ option.name }}
|
45
|
-
%template(v-else)
|
46
|
-
%label{"v-bind:for" => "inputId(pluginType, option)",
|
47
|
-
"data-toggle" => "tooltip",
|
48
|
-
"data-placement" => "right",
|
49
|
-
"v-bind:title" => "option.desc"}
|
50
|
-
{{ option.name }}
|
51
|
-
%template{"v-if" => 'option.name === "expression"'}
|
52
|
-
%input{"v-bind:id" => "inputId(pluginType, option)",
|
53
|
-
"v-bind:name" => "inputName(pluginType, option)",
|
54
|
-
"v-model.lazy" => "expression",
|
55
|
-
"type" => "text",
|
56
|
-
"class" => "form-control"}
|
57
|
-
%template{"v-else-if" => 'option.name === "time_format"'}
|
58
|
-
%input{"v-bind:id" => "inputId(pluginType, option)",
|
59
|
-
"v-bind:name" => "inputName(pluginType, option)",
|
60
|
-
"v-model.lazy" => "timeFormat",
|
61
|
-
"type" => "text",
|
62
|
-
"class" => "form-control"}
|
63
|
-
%template(v-else)
|
64
|
-
%input{"v-bind:id" => "inputId(pluginType, option)",
|
65
|
-
"v-bind:name" => "inputName(pluginType, option)",
|
66
|
-
"v-bind:value" => "option.default",
|
67
|
-
"type" => "text",
|
68
|
-
"class" => "form-control"}
|
22
|
+
%template(v-else){"v-for" => "option in commonOptions"}
|
23
|
+
%config-field{"v-bind:plugin-type" => "pluginType",
|
24
|
+
"v-bind:option" => "option",
|
25
|
+
"v-bind:initial-expression" => "expression",
|
26
|
+
"v-bind:initial-time-format" => "timeFormat",
|
27
|
+
"v-bind:initial-text-value" => "initialParams[option.name]",
|
28
|
+
"v-on:change-parse-config" => "onChangeParseConfig"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
= render "shared/vue/config_field"
|
2
|
+
|
3
|
+
%script{type: "text/x-template", id: "vue-transport-config"}
|
4
|
+
.form-group.card.card-body.bg-light
|
5
|
+
%h4
|
6
|
+
Transport
|
7
|
+
.form-group
|
8
|
+
%select{"class" => "form-control",
|
9
|
+
"v-model" => "transportType",
|
10
|
+
"v-on:change" => "onChange"}
|
11
|
+
%option{"v-for" => "option in options",
|
12
|
+
"v-bind:value" => "option",
|
13
|
+
"v-bind:selected" => "transportType === option"}
|
14
|
+
{{ option | toUpper }}
|
15
|
+
%p{"v-if" => 'transportType === "tcp"'}
|
16
|
+
Nothing to configure
|
17
|
+
%template(v-else)
|
18
|
+
%template{"v-for" => "option in tlsOptions"}
|
19
|
+
%config-field{"v-bind:plugin-type" => "pluginType",
|
20
|
+
"v-bind:option" => "option"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
- add_javascript_pack_tag("transport_section")
|
2
|
+
|
3
|
+
= render "shared/vue/config_field"
|
4
|
+
|
5
|
+
#transport-section.form-group.card.card-body.bg-light{"pluginType" => setting.plugin_type,
|
6
|
+
"pluginName" => setting.plugin_name}
|
7
|
+
%label
|
8
|
+
Transport
|
9
|
+
.form-group
|
10
|
+
%select{"class" => "form-control",
|
11
|
+
"v-model" => "transportType",
|
12
|
+
"v-on:change" => "onChange"}
|
13
|
+
%option{"v-for" => "option in options",
|
14
|
+
"v-bind:value" => "option",
|
15
|
+
"v-bind:selected" => "transportType === option"}
|
16
|
+
{{ option | toUpper }}
|
17
|
+
%p{"v-if" => 'transportType === "tcp"'}
|
18
|
+
Nothing to configure
|
19
|
+
%template(v-else)
|
20
|
+
%template{"v-for" => "option in commonOptions"}
|
21
|
+
%config-field{"v-bind:plugin-type" => "pluginType",
|
22
|
+
"v-bind:option" => "option"}
|
23
|
+
.card.card-body.bg-light
|
24
|
+
%h4{"data-toggle" => "collapse", "href" => "#transport-advanced-setting"}
|
25
|
+
= icon('fa-caret-down')
|
26
|
+
= t('terms.advanced_setting') + '(TLS)'
|
27
|
+
#transport-advanced-setting.collapse
|
28
|
+
%template{"v-for" => "option in advancedOptions"}
|
29
|
+
%config-field{"v-bind:plugin-type" => "pluginType",
|
30
|
+
"v-bind:option" => "option"}
|
@@ -0,0 +1 @@
|
|
1
|
+
$log ||= DummyLogger.logger
|
@@ -2,6 +2,7 @@ ActiveModel::Type.register(:array, Fluentd::Setting::Type::Array)
|
|
2
2
|
ActiveModel::Type.register(:enum, Fluentd::Setting::Type::Enum)
|
3
3
|
ActiveModel::Type.register(:bool, Fluentd::Setting::Type::Bool)
|
4
4
|
ActiveModel::Type.register(:hash, Fluentd::Setting::Type::Hash)
|
5
|
-
ActiveModel::Type.register(:
|
5
|
+
ActiveModel::Type.register(:object, Fluentd::Setting::Type::Object)
|
6
|
+
ActiveModel::Type.register(:regexp, Fluentd::Setting::Type::Regexp)
|
6
7
|
ActiveModel::Type.register(:size, Fluentd::Setting::Type::Size)
|
7
8
|
ActiveModel::Type.register(:section, Fluentd::Setting::Type::Section)
|
@@ -111,7 +111,7 @@ ja:
|
|
111
111
|
setup_in_monitor_agent: 監視エージェント
|
112
112
|
setup_in_http: http
|
113
113
|
setup_in_forward: 転送(他Fluentdからの受信)
|
114
|
-
|
114
|
+
setup_out_tdlog: Treasure Data
|
115
115
|
setup_out_stdout: 標準出力(ログ)
|
116
116
|
setup_out_mongo: MongoDB
|
117
117
|
setup_out_forward: 転送
|
@@ -163,7 +163,7 @@ ja:
|
|
163
163
|
<a target="_blank" href="http://docs.fluentd.org/articles/out_s3">out_s3プラグインの解説</a>もご参照ください。
|
164
164
|
show:
|
165
165
|
page_title: AWS S3書き出し設定
|
166
|
-
|
166
|
+
out_tdlog:
|
167
167
|
option_guide: |
|
168
168
|
fluent-plugin-tdプラグインのインストールが必要です。<br />
|
169
169
|
show:
|
data/fluentd-ui.gemspec
CHANGED
@@ -35,6 +35,7 @@ Gem::Specification.new do |spec|
|
|
35
35
|
|
36
36
|
spec.add_dependency "fluentd", [">= 1.0.0", "< 2"]
|
37
37
|
spec.add_dependency 'rails', '~> 5.2.0'
|
38
|
+
spec.add_dependency "dig_rb", "~> 1.0.0"
|
38
39
|
spec.add_dependency "bootsnap", ">= 1.1.0"
|
39
40
|
spec.add_dependency 'sucker_punch', "~> 2.0.4"
|
40
41
|
spec.add_dependency 'addressable'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
group :development, :test do
|
4
|
+
gem "rake"
|
5
|
+
gem "pry"
|
6
|
+
gem "pry-rails"
|
7
|
+
gem "rspec-rails", "~> 3.0"
|
8
|
+
end
|
9
|
+
|
10
|
+
group :development do
|
11
|
+
gem 'listen', '>= 3.0.5', '< 3.2'
|
12
|
+
gem 'i18n_generators', '2.1.1'
|
13
|
+
gem 'better_errors'
|
14
|
+
gem 'web-console', '~> 3.6'
|
15
|
+
gem 'binding_of_caller'
|
16
|
+
end
|
17
|
+
|
18
|
+
group :test do
|
19
|
+
gem "factory_bot_rails"
|
20
|
+
gem "capybara", "~> 3.1.1"
|
21
|
+
gem "capybara-screenshot"
|
22
|
+
gem "simplecov", "~> 0.16.1", require: false
|
23
|
+
gem "webmock", "~> 3.3.0"
|
24
|
+
gem "timecop"
|
25
|
+
gem "selenium-webdriver", "~> 3.12.0"
|
26
|
+
end
|
27
|
+
|
28
|
+
gemspec path: ".."
|
data/lib/dummy_logger.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require "fluent/test/log"
|
2
|
+
require "serverengine"
|
3
|
+
|
4
|
+
module DummyLogger
|
5
|
+
class << self
|
6
|
+
def logger
|
7
|
+
dl_opts = {log_level: ServerEngine::DaemonLogger::INFO}
|
8
|
+
logdev = Fluent::Test::DummyLogDevice.new
|
9
|
+
logger = ServerEngine::DaemonLogger.new(logdev, dl_opts)
|
10
|
+
Fluent::Log.new(logger)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/fluentd-ui/version.rb
CHANGED
data/package.json
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
{
|
2
2
|
"name": "fluentd-ui",
|
3
3
|
"private": true,
|
4
|
+
"scripts": {
|
5
|
+
"lint": "eslint app/javascript"
|
6
|
+
},
|
4
7
|
"dependencies": {
|
5
8
|
"@rails/webpacker": "3.5",
|
6
9
|
"codemirror": "^5.37.0",
|
@@ -15,6 +18,8 @@
|
|
15
18
|
"vue-template-compiler": "^2.5.16"
|
16
19
|
},
|
17
20
|
"devDependencies": {
|
21
|
+
"eslint": "^5.1.0",
|
22
|
+
"eslint-plugin-vue": "^4.7.0",
|
18
23
|
"webpack-dev-server": "2.11.2"
|
19
24
|
}
|
20
25
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe "out_forward", stub: :daemon do
|
3
|
+
describe "out_forward", js: true, stub: :daemon do
|
4
4
|
before { login_with exists_user }
|
5
5
|
|
6
6
|
let(:type) { "out_forward" }
|
@@ -8,9 +8,8 @@ describe "out_forward", stub: :daemon do
|
|
8
8
|
let(:form_values) { {
|
9
9
|
Pattern: "*",
|
10
10
|
Name: "name",
|
11
|
-
Host: "
|
11
|
+
Host: "localhost",
|
12
12
|
Port: "9999",
|
13
|
-
Path: "/dev/null",
|
14
13
|
} }
|
15
14
|
|
16
15
|
it "Updated config after submit" do
|
@@ -19,7 +18,7 @@ describe "out_forward", stub: :daemon do
|
|
19
18
|
daemon.agent.config.should_not include(v)
|
20
19
|
end
|
21
20
|
visit page_url
|
22
|
-
within("
|
21
|
+
within("form") do
|
23
22
|
form_values.each_pair do |k,v|
|
24
23
|
fill_in k, with: v
|
25
24
|
end
|
@@ -28,7 +27,6 @@ describe "out_forward", stub: :daemon do
|
|
28
27
|
form_values.each_pair do |k,v|
|
29
28
|
daemon.agent.config.should include(v)
|
30
29
|
end
|
31
|
-
daemon.agent.config.should include("type file") # out_forward's Secondary hidden field
|
32
30
|
end
|
33
31
|
|
34
32
|
it "Click to append Server fields", js: true do
|
@@ -11,14 +11,14 @@ describe "out_elasticsearch", stub: :daemon do
|
|
11
11
|
|
12
12
|
it "Shown form" do
|
13
13
|
visit location
|
14
|
-
page.should have_css('input[name="
|
14
|
+
page.should have_css('input[name="setting[pattern]"]')
|
15
15
|
end
|
16
16
|
|
17
17
|
it "Updated config after submit", js: true do
|
18
18
|
daemon.agent.config.should_not include(match)
|
19
19
|
visit location
|
20
|
-
within('
|
21
|
-
fill_in "
|
20
|
+
within('form') do
|
21
|
+
fill_in "Pattern", with: match
|
22
22
|
fill_in "Index name", with: "index"
|
23
23
|
fill_in "Type name", with: "type_name"
|
24
24
|
end
|