|
41 | 41 | import org.apache.seatunnel.connectors.seatunnel.fake.utils.FakeDataRandomUtils;
|
42 | 42 | import org.apache.seatunnel.format.json.JsonDeserializationSchema;
|
43 | 43 |
|
| 44 | +import com.google.common.annotations.VisibleForTesting; |
| 45 | + |
44 | 46 | import java.io.IOException;
|
45 | 47 | import java.lang.reflect.Array;
|
46 | 48 | import java.math.BigDecimal;
|
|
51 | 53 | import java.util.ArrayList;
|
52 | 54 | import java.util.HashMap;
|
53 | 55 | import java.util.List;
|
| 56 | +import java.util.function.Consumer; |
54 | 57 | import java.util.function.Function;
|
55 | 58 |
|
56 | 59 | import static org.apache.seatunnel.api.table.type.SqlType.TIME;
|
@@ -105,26 +108,36 @@ private SeaTunnelRow randomRow() {
|
105 | 108 | return seaTunnelRow;
|
106 | 109 | }
|
107 | 110 |
|
| 111 | + @VisibleForTesting |
| 112 | + public List<SeaTunnelRow> generateFakedRows(int rowNum) { |
| 113 | + List<SeaTunnelRow> rows = new ArrayList<>(); |
| 114 | + generateFakedRows(rowNum, rows::add); |
| 115 | + return rows; |
| 116 | + } |
| 117 | + |
108 | 118 | /**
|
109 | 119 | * @param rowNum The number of pieces of data to be generated by the current task
|
110 |
| - * @return The generated data |
| 120 | + * @param consumer The generated data is sent to consumer |
| 121 | + * @return The number of generated data row count |
111 | 122 | */
|
112 |
| - public List<SeaTunnelRow> generateFakedRows(int rowNum) { |
| 123 | + public long generateFakedRows(int rowNum, Consumer<SeaTunnelRow> consumer) { |
113 | 124 | // Use manual configuration data preferentially
|
114 |
| - List<SeaTunnelRow> seaTunnelRows = new ArrayList<>(); |
| 125 | + long rowCount = 0; |
115 | 126 | if (fakeConfig.getFakeRows() != null) {
|
116 | 127 | SeaTunnelDataType<?>[] fieldTypes = catalogTable.getSeaTunnelRowType().getFieldTypes();
|
117 | 128 | String[] fieldNames = catalogTable.getSeaTunnelRowType().getFieldNames();
|
118 | 129 | for (FakeConfig.RowData rowData : fakeConfig.getFakeRows()) {
|
119 | 130 | customField(rowData, fieldTypes, fieldNames);
|
120 |
| - seaTunnelRows.add(convertRow(rowData)); |
| 131 | + consumer.accept(convertRow(rowData)); |
| 132 | + rowCount++; |
121 | 133 | }
|
122 | 134 | } else {
|
123 | 135 | for (int i = 0; i < rowNum; i++) {
|
124 |
| - seaTunnelRows.add(randomRow()); |
| 136 | + consumer.accept(randomRow()); |
| 137 | + rowCount++; |
125 | 138 | }
|
126 | 139 | }
|
127 |
| - return seaTunnelRows; |
| 140 | + return rowCount; |
128 | 141 | }
|
129 | 142 |
|
130 | 143 | private void customField(
|
|
0 commit comments