embulk-input-cloudwatch_logs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,144 @@
1
+ package org.embulk.input.cloudwatch_logs;
2
+
3
+ import com.amazonaws.services.logs.AWSLogsClient;
4
+ import com.amazonaws.services.logs.AWSLogsClientBuilder;
5
+ import com.amazonaws.services.logs.AWSLogs;
6
+ import com.amazonaws.services.logs.model.DescribeLogStreamsRequest;
7
+ import com.amazonaws.services.logs.model.DescribeLogStreamsResult;
8
+ import com.amazonaws.services.logs.model.LogStream;
9
+ import com.amazonaws.services.logs.model.GetLogEventsRequest;
10
+ import com.amazonaws.services.logs.model.GetLogEventsResult;
11
+ import com.amazonaws.services.logs.model.OutputLogEvent;
12
+
13
+ import org.embulk.EmbulkTestRuntime;
14
+ import org.embulk.config.ConfigDiff;
15
+ import org.embulk.config.ConfigSource;
16
+ import org.embulk.config.TaskReport;
17
+ import org.embulk.config.TaskSource;
18
+ import org.embulk.spi.InputPlugin;
19
+ import org.embulk.spi.PageBuilder;
20
+ import org.embulk.spi.PageOutput;
21
+ import org.embulk.spi.Schema;
22
+ import org.embulk.spi.TestPageBuilderReader.MockPageOutput;
23
+ import org.embulk.spi.util.Pages;
24
+ import org.embulk.test.EmbulkTests;
25
+ import org.embulk.test.TestingEmbulk;
26
+
27
+ import org.junit.Before;
28
+ import org.junit.BeforeClass;
29
+ import org.junit.Rule;
30
+ import org.junit.Test;
31
+ import org.mockito.Mockito;
32
+ import org.mockito.Spy;
33
+
34
+ import java.io.IOException;
35
+ import java.util.ArrayList;
36
+ import java.util.List;
37
+ import org.embulk.input.cloudwatch_logs.CloudwatchLogsInputPlugin;
38
+
39
+ import static org.embulk.input.cloudwatch_logs.CloudwatchLogsInputPlugin.CloudWatchLogsPluginTask;
40
+ import static org.junit.Assert.assertEquals;
41
+ import static org.junit.Assert.assertFalse;
42
+ import static org.junit.Assert.assertNull;
43
+ import static org.junit.Assume.assumeNotNull;
44
+ import static org.junit.Assert.assertEquals;
45
+ import static org.junit.Assert.assertTrue;
46
+ import static org.mockito.Mockito.doReturn;
47
+ import static org.mockito.Mockito.times;
48
+ import static org.mockito.Mockito.verify;
49
+ import static org.mockito.Mockito.when;
50
+
51
+ public class TestCloudwatchLogsInputPlugin
52
+ {
53
+ @Rule
54
+ public EmbulkTestRuntime runtime = new EmbulkTestRuntime();
55
+
56
+ @Rule
57
+ public TestingEmbulk embulk = TestingEmbulk.builder()
58
+ .registerPlugin(InputPlugin.class, "cloudwatch_logs", CloudwatchLogsInputPlugin.class)
59
+ .build();
60
+
61
+ private CloudwatchLogsInputPlugin plugin;
62
+
63
+ private ConfigSource config;
64
+ private MockPageOutput output = new MockPageOutput();
65
+ private PageBuilder pageBuilder;
66
+
67
+ private static String EMBULK_LOGS_TEST_GROUP_NAME;
68
+ private static String EMBULK_LOGS_TEST_STREAM_NAME;
69
+ private static String EMBULK_LOGS_TEST_REGION;
70
+ private static String EMBULK_LOGS_TEST_ACCESS_KEY_ID;
71
+ private static String EMBULK_LOGS_TEST_SECRET_ACCESS_KEY;
72
+
73
+ /*
74
+ * This test case requires environment variables:
75
+ * EMBULK_LOGS_TEST_GROUP_NAME
76
+ * EMBULK_LOGS_TEST_STREAM_NAME
77
+ * EMBULK_LOGS_TEST_REGION
78
+ * EMBULK_LOGS_TEST_ACCESS_KEY_ID
79
+ * EMBULK_LOGS_TEST_SECRET_ACCESS_KEY
80
+ * If the variables not set, the test case is skipped.
81
+ */
82
+ @BeforeClass
83
+ public static void initializeConstantVariables()
84
+ {
85
+ EMBULK_LOGS_TEST_GROUP_NAME = System.getenv("EMBULK_LOGS_TEST_GROUP_NAME");
86
+ EMBULK_LOGS_TEST_STREAM_NAME = System.getenv("EMBULK_LOGS_TEST_STREAM_NAME");
87
+ EMBULK_LOGS_TEST_REGION = System.getenv("EMBULK_LOGS_TEST_REGION");
88
+ EMBULK_LOGS_TEST_ACCESS_KEY_ID = System.getenv("EMBULK_LOGS_TEST_ACCESS_KEY_ID");
89
+ EMBULK_LOGS_TEST_SECRET_ACCESS_KEY = System.getenv("EMBULK_LOGS_TEST_SECRET_ACCESS_KEY");
90
+ assumeNotNull(EMBULK_LOGS_TEST_GROUP_NAME, EMBULK_LOGS_TEST_STREAM_NAME, EMBULK_LOGS_TEST_REGION, EMBULK_LOGS_TEST_ACCESS_KEY_ID, EMBULK_LOGS_TEST_SECRET_ACCESS_KEY);
91
+ }
92
+
93
+ @Before
94
+ public void setUp() throws IOException
95
+ {
96
+ if (plugin == null) {
97
+ plugin = Mockito.spy(new CloudwatchLogsInputPlugin());
98
+ config = runtime.getExec().newConfigSource()
99
+ .set("type", "cloudwatch_logs")
100
+ .set("log_group_name", EMBULK_LOGS_TEST_GROUP_NAME)
101
+ .set("log_stream_name", EMBULK_LOGS_TEST_STREAM_NAME)
102
+ .set("use_log_stream_name_prefix", "true")
103
+ .set("region", EMBULK_LOGS_TEST_REGION)
104
+ .set("aws_access_key_id", EMBULK_LOGS_TEST_ACCESS_KEY_ID)
105
+ .set("aws_secret_access_key", EMBULK_LOGS_TEST_SECRET_ACCESS_KEY);
106
+ pageBuilder = Mockito.mock(PageBuilder.class);
107
+ }
108
+ doReturn(pageBuilder).when(plugin).getPageBuilder(Mockito.any(), Mockito.any());
109
+ }
110
+
111
+ @Test
112
+ public void test_simple() throws IOException
113
+ {
114
+ plugin.transaction(config, new Control());
115
+ verify(pageBuilder, times(1)).finish();
116
+ }
117
+
118
+ @Test
119
+ public void configuredRegion()
120
+ {
121
+ CloudWatchLogsPluginTask task = this.config.deepCopy()
122
+ .set("region", "ap-southeast-2")
123
+ .remove("endpoint")
124
+ .loadConfig(CloudWatchLogsPluginTask.class);
125
+ CloudwatchLogsInputPlugin plugin = runtime.getInstance(CloudwatchLogsInputPlugin.class);
126
+ AWSLogs logsClient = plugin.newLogsClient(task);
127
+
128
+ // Should not be null
129
+ assumeNotNull(logsClient);
130
+ }
131
+
132
+ private class Control implements InputPlugin.Control
133
+ {
134
+ @Override
135
+ public List<TaskReport> run(final TaskSource taskSource, final Schema schema, final int taskCount)
136
+ {
137
+ List<TaskReport> reports = new ArrayList<>();
138
+ for (int i = 0; i < taskCount; i++) {
139
+ reports.add(plugin.run(taskSource, schema, i, output));
140
+ }
141
+ return reports;
142
+ }
143
+ }
144
+ }
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: embulk-input-cloudwatch_logs
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Hiroshi Hatake
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-03-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.0'
19
+ name: bundler
20
+ prerelease: false
21
+ type: :development
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '12.0'
33
+ name: rake
34
+ prerelease: false
35
+ type: :development
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12.0'
41
+ description: Loads records from Cloudwatch Logs.
42
+ email:
43
+ - cosmo0920.wp@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - LICENSE.txt
50
+ - README.md
51
+ - build.gradle
52
+ - classpath/aws-java-sdk-core-1.11.749.jar
53
+ - classpath/aws-java-sdk-logs-1.11.749.jar
54
+ - classpath/aws-java-sdk-sts-1.11.749.jar
55
+ - classpath/commons-codec-1.11.jar
56
+ - classpath/commons-logging-1.2.jar
57
+ - classpath/embulk-input-cloudwatch_logs-0.1.0.jar
58
+ - classpath/httpclient-4.5.9.jar
59
+ - classpath/httpcore-4.4.11.jar
60
+ - classpath/ion-java-1.0.2.jar
61
+ - classpath/jackson-databind-2.6.7.3.jar
62
+ - classpath/jackson-dataformat-cbor-2.6.7.jar
63
+ - classpath/jmespath-java-1.11.749.jar
64
+ - config/checkstyle/checkstyle.xml
65
+ - config/checkstyle/default.xml
66
+ - gradle/wrapper/gradle-wrapper.jar
67
+ - gradle/wrapper/gradle-wrapper.properties
68
+ - gradlew
69
+ - gradlew.bat
70
+ - lib/embulk/input/cloudwatch_logs.rb
71
+ - src/main/java/org/embulk/input/cloudwatch_logs/AbstractCloudwatchLogsInputPlugin.java
72
+ - src/main/java/org/embulk/input/cloudwatch_logs/CloudwatchLogsInputPlugin.java
73
+ - src/main/java/org/embulk/input/cloudwatch_logs/aws/AwsCredentials.java
74
+ - src/main/java/org/embulk/input/cloudwatch_logs/aws/AwsCredentialsConfig.java
75
+ - src/main/java/org/embulk/input/cloudwatch_logs/aws/AwsCredentialsTask.java
76
+ - src/test/java/org/embulk/input/cloudwatch_logs/TestAwsCredentials.java
77
+ - src/test/java/org/embulk/input/cloudwatch_logs/TestCloudwatchLogsInputPlugin.java
78
+ homepage: https://github.com/cosmo0920/embulk-input-cloudwatch_logs
79
+ licenses:
80
+ - MIT
81
+ metadata: {}
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubyforge_project:
98
+ rubygems_version: 2.6.8
99
+ signing_key:
100
+ specification_version: 4
101
+ summary: Cloudwatch Logs input plugin for Embulk
102
+ test_files: []