embulk-input-randomj 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 664734a687060fbda08c7e14593684f63a501767
4
- data.tar.gz: 3e3aa292e1eb2916cf8b516c3bc486f194e67417
3
+ metadata.gz: 1165a1e2c182b649c7a2fbf73de530de55a5497f
4
+ data.tar.gz: ab71604a4f4af3d7765433b7e380e5f509f7b7e2
5
5
  SHA512:
6
- metadata.gz: c07094226ddafc4ce96a2f8738a8a73c86a9e143d3de802b048ee80990459f6b9fff0db75adc0b1d15a5127e91a61241f1556db7540bf1d1f6f0e5ccdc055180
7
- data.tar.gz: 6a97183220e98b63c92c2cccb7b54d8ae6456b796670abeda1d10b1bc3a6effbdde9f6182980dbb1ff13289802741f89ee9a60f8b7b01723d18d7cfc278f9bee
6
+ metadata.gz: 9fc2bea3f88fcc01b2a2e33061d0a28d2588345d8b293ca567cb7aaadcd1daf3975c70f24328e2facbb2e4dd511e06dec5f854520885e77984bfa7a03a508866
7
+ data.tar.gz: a6d3961d0f3fcd6ebd3f02545f6272a05805680de3923cb2ff1a3dc8db588219e429549a7279b4cca14d719feeed126046f465d7ab7ede26a92f123fe58ea787
@@ -10,3 +10,5 @@ sudo: false
10
10
  script:
11
11
  - ./gradlew --info checkstyle
12
12
  - ./gradlew --info check
13
+
14
+ after_success: ./gradlew sonarqube -Dsonar.organization=yuokada-github -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${SONAR_TOKEN}
data/README.md CHANGED
@@ -179,3 +179,10 @@ $ ./gradlew gem # -t to watch change of files and rebuild continuously
179
179
  $ ./gradlew build && ./gradlew classpath
180
180
  $ embulk run -I lib config/example.yml
181
181
  ```
182
+
183
+
184
+ ## ChangeLog
185
+
186
+ ### v0.4
187
+
188
+ - Support null_rate parameter
@@ -4,6 +4,7 @@ plugins {
4
4
  id "java"
5
5
  id "checkstyle"
6
6
  id "findbugs"
7
+ id "org.sonarqube" version "2.5"
7
8
  }
8
9
  import com.github.jrubygradle.JRubyExec
9
10
  repositories {
@@ -14,7 +15,7 @@ configurations {
14
15
  provided
15
16
  }
16
17
 
17
- version = "0.3.0"
18
+ version = "0.4.0"
18
19
 
19
20
  sourceCompatibility = 1.8
20
21
  targetCompatibility = 1.8
@@ -1,6 +1,6 @@
1
- #Sun Jan 08 00:35:58 PST 2017
1
+ #Sun Oct 08 14:24:25 JST 2017
2
2
  distributionBase=GRADLE_USER_HOME
3
3
  distributionPath=wrapper/dists
4
4
  zipStoreBase=GRADLE_USER_HOME
5
5
  zipStorePath=wrapper/dists
6
- distributionUrl=https\://services.gradle.org/distributions/gradle-3.2.1-bin.zip
6
+ distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-bin.zip
data/gradlew CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env bash
1
+ #!/usr/bin/env sh
2
2
 
3
3
  ##############################################################################
4
4
  ##
@@ -154,16 +154,19 @@ if $cygwin ; then
154
154
  esac
155
155
  fi
156
156
 
157
- # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
158
- function splitJvmOpts() {
159
- JVM_OPTS=("$@")
157
+ # Escape application args
158
+ save ( ) {
159
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160
+ echo " "
160
161
  }
161
- eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
162
- JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
162
+ APP_ARGS=$(save "$@")
163
+
164
+ # Collect all arguments for the java command, following the shell quoting and substitution rules
165
+ eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
163
166
 
164
167
  # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
165
- if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then
168
+ if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
166
169
  cd "$(dirname "$0")"
167
170
  fi
168
171
 
169
- exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
172
+ exec "$JAVACMD" "$@"
@@ -10,7 +10,6 @@ import org.embulk.spi.time.Timestamp;
10
10
 
11
11
  import java.time.LocalDateTime;
12
12
  import java.time.ZoneId;
13
- import java.util.HashMap;
14
13
  import java.util.Map;
15
14
  import java.util.Random;
16
15
 
@@ -21,14 +20,14 @@ public class RandomjColumnVisitor
21
20
  private final PluginTask task;
22
21
  private final Integer row;
23
22
  private final Random rnd;
24
- private final HashMap<Column, Map<String, Integer>> columnOptions;
23
+ private final Map<Column, Map<String, Integer>> columnOptions;
25
24
  private final RandomStringGenerator generator = new RandomStringGenerator.Builder()
26
25
  .withinRange('0', 'z')
27
26
  .filteredBy(CharacterPredicates.LETTERS, CharacterPredicates.DIGITS)
28
27
  .build();
29
28
  private final ZoneId zoneId = ZoneId.systemDefault();
30
29
 
31
- public RandomjColumnVisitor(PageBuilder pageBuilder, PluginTask task, Integer row, HashMap<Column, Map<String, Integer>> columnOptions)
30
+ public RandomjColumnVisitor(PageBuilder pageBuilder, PluginTask task, Integer row, Map<Column, Map<String, Integer>> columnOptions)
32
31
  {
33
32
  this.task = task;
34
33
  this.pageBuilder = pageBuilder;
@@ -40,11 +39,17 @@ public class RandomjColumnVisitor
40
39
  @Override
41
40
  public void booleanColumn(Column column)
42
41
  {
43
- if (Math.random() < 0.5) {
44
- pageBuilder.setBoolean(column, false);
42
+ Integer nrate = columnOptions.get(column).get("null_rate");
43
+ if (Math.random() < (double) nrate / 10000) {
44
+ pageBuilder.setNull(column);
45
45
  }
46
46
  else {
47
- pageBuilder.setBoolean(column, true);
47
+ if (Math.random() < 0.5) {
48
+ pageBuilder.setBoolean(column, false);
49
+ }
50
+ else {
51
+ pageBuilder.setBoolean(column, true);
52
+ }
48
53
  }
49
54
  }
50
55
 
@@ -56,66 +61,90 @@ public class RandomjColumnVisitor
56
61
  pageBuilder.setLong(column, row);
57
62
  }
58
63
  else {
59
- Integer max = columnOptions.get(column).get("max_value");
60
- Integer min = columnOptions.get(column).get("min_value");
61
- if (max != null) {
62
- if (min != null) {
63
- Integer s = min + rnd.nextInt((max - min));
64
- pageBuilder.setLong(column, s);
64
+ Integer nrate = columnOptions.get(column).get("null_rate");
65
+ if (Math.random() < (double) nrate / 10000) {
66
+ pageBuilder.setNull(column);
67
+ }
68
+ else {
69
+ Integer max = columnOptions.get(column).get("max_value");
70
+ Integer min = columnOptions.get(column).get("min_value");
71
+ if (max != null) {
72
+ if (min != null) {
73
+ Integer s = min + rnd.nextInt((max - min));
74
+ pageBuilder.setLong(column, s);
75
+ }
76
+ else {
77
+ pageBuilder.setLong(column, rnd.nextInt(max));
78
+ }
65
79
  }
66
80
  else {
67
- pageBuilder.setLong(column, rnd.nextInt(max));
81
+ pageBuilder.setLong(column, rnd.nextInt(10000));
68
82
  }
69
83
  }
70
- else {
71
- pageBuilder.setLong(column, rnd.nextInt(10000));
72
- }
73
84
  }
74
85
  }
75
86
 
76
87
  @Override
77
88
  public void doubleColumn(Column column)
78
89
  {
79
- Integer max = columnOptions.get(column).get("max_value");
80
- Integer min = columnOptions.get(column).get("min_value");
81
- if (max != null) {
82
- if (min != null) {
83
- Double d = min + rnd.nextInt((max - min) - 1) + rnd.nextDouble();
84
- pageBuilder.setDouble(column, d);
90
+ Integer nrate = columnOptions.get(column).get("null_rate");
91
+ if (Math.random() < (double) nrate / 10000) {
92
+ pageBuilder.setNull(column);
93
+ }
94
+ else {
95
+ Integer max = columnOptions.get(column).get("max_value");
96
+ Integer min = columnOptions.get(column).get("min_value");
97
+ if (max != null) {
98
+ if (min != null) {
99
+ Double d = min + rnd.nextInt((max - min) - 1) + rnd.nextDouble();
100
+ pageBuilder.setDouble(column, d);
101
+ }
102
+ else {
103
+ Double d = rnd.nextInt(max - 1) + rnd.nextDouble();
104
+ pageBuilder.setDouble(column, d);
105
+ }
85
106
  }
86
107
  else {
87
- Double d = rnd.nextInt(max - 1) + rnd.nextDouble();
88
- pageBuilder.setDouble(column, d);
108
+ pageBuilder.setDouble(column, rnd.nextDouble() * 10000);
89
109
  }
90
110
  }
91
- else {
92
- pageBuilder.setDouble(column, rnd.nextDouble() * 10000);
93
- }
94
111
  }
95
112
 
96
113
  @Override
97
114
  public void stringColumn(Column column)
98
115
  {
99
- final Integer length = columnOptions.get(column).getOrDefault("length", 0);
100
- if (length == 0) {
101
- pageBuilder.setString(column, generator.generate(32));
116
+ Integer nrate = columnOptions.get(column).get("null_rate");
117
+ if (Math.random() < (double) nrate / 10000) {
118
+ pageBuilder.setNull(column);
102
119
  }
103
120
  else {
104
- pageBuilder.setString(column, generator.generate(length));
121
+ final Integer length = columnOptions.get(column).getOrDefault("length", 0);
122
+ if (length == 0) {
123
+ pageBuilder.setString(column, generator.generate(32));
124
+ }
125
+ else {
126
+ pageBuilder.setString(column, generator.generate(length));
127
+ }
105
128
  }
106
129
  }
107
130
 
108
131
  @Override
109
132
  public void timestampColumn(Column column)
110
133
  {
111
- final double randd = Math.random();
112
- LocalDateTime randomDate = LocalDateTime.now()
113
- .plusDays((long) (randd * 100))
114
- .plusSeconds((long) (randd * 1000000));
115
- Timestamp timestamp = Timestamp.ofEpochSecond(
116
- randomDate.atZone(zoneId).toEpochSecond()
117
- );
118
- pageBuilder.setTimestamp(column, timestamp);
134
+ Integer nrate = columnOptions.get(column).get("null_rate");
135
+ if (Math.random() < (double) nrate / 10000) {
136
+ pageBuilder.setNull(column);
137
+ }
138
+ else {
139
+ final double randd = Math.random();
140
+ LocalDateTime randomDate = LocalDateTime.now()
141
+ .plusDays((long) (randd * 100))
142
+ .plusSeconds((long) (randd * 1000000));
143
+ Timestamp timestamp = Timestamp.ofEpochSecond(
144
+ randomDate.atZone(zoneId).toEpochSecond()
145
+ );
146
+ pageBuilder.setTimestamp(column, timestamp);
147
+ }
119
148
  }
120
149
 
121
150
  @Override
@@ -1,7 +1,5 @@
1
1
  package org.embulk.input.randomj;
2
2
 
3
- import org.apache.commons.text.CharacterPredicates;
4
- import org.apache.commons.text.RandomStringGenerator;
5
3
  import org.embulk.config.Config;
6
4
  import org.embulk.config.ConfigDefault;
7
5
  import org.embulk.config.ConfigDiff;
@@ -26,11 +24,6 @@ import java.util.stream.IntStream;
26
24
  public class RandomjInputPlugin
27
25
  implements InputPlugin
28
26
  {
29
- private final RandomStringGenerator generator = new RandomStringGenerator.Builder()
30
- .withinRange('0', 'z')
31
- .filteredBy(CharacterPredicates.LETTERS, CharacterPredicates.DIGITS)
32
- .build();
33
-
34
27
  public interface PluginTask
35
28
  extends Task
36
29
  {
@@ -77,6 +70,7 @@ public class RandomjInputPlugin
77
70
  Schema schema, int taskCount,
78
71
  List<TaskReport> successTaskReports)
79
72
  {
73
+ // throw new UnsupportedOperationException("randomj input plugin does not support cleanup");
80
74
  }
81
75
 
82
76
  @Override
@@ -115,6 +109,7 @@ public class RandomjInputPlugin
115
109
  HashMap<String, Integer> miniMap = new HashMap<>();
116
110
  ColumnConfig c = schemaConfig.getColumn(column.getIndex());
117
111
  miniMap.put("length", c.getOption().get(Integer.class, "length", 0));
112
+ miniMap.put("null_rate", c.getOption().get(Integer.class, "null_rate", 0));
118
113
  miniMap.put("max_value", c.getOption().get(Integer.class, "max_value", null));
119
114
  miniMap.put("min_value", c.getOption().get(Integer.class, "min_value", null));
120
115
  lengthMap.put(column, miniMap);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-randomj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yuokada
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-10 00:00:00.000000000 Z
11
+ date: 2017-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -62,7 +62,7 @@ files:
62
62
  - src/test/java/org/embulk/input/randomj/TestRandomjInputPlugin.java
63
63
  - classpath/commons-lang3-3.5.jar
64
64
  - classpath/commons-text-1.1.jar
65
- - classpath/embulk-input-randomj-0.3.0.jar
65
+ - classpath/embulk-input-randomj-0.4.0.jar
66
66
  homepage: https://github.com/yuokada/embulk-input-randomj
67
67
  licenses:
68
68
  - MIT