| 
19 | 19 | import static com.google.common.testing.SerializableTester.reserialize;  | 
20 | 20 | import static com.google.common.truth.Truth.assertThat;  | 
21 | 21 | import static org.junit.Assert.assertEquals;  | 
 | 22 | +import static org.junit.Assert.assertFalse;  | 
22 | 23 | import static org.junit.Assert.assertThrows;  | 
23 | 24 | import static org.junit.Assert.assertTrue;  | 
24 | 25 | 
 
  | 
@@ -1115,4 +1116,58 @@ public void getProtoEnumList() {  | 
1115 | 1116 |           resultSet.getProtoEnum(0, Genre::forNumber);  | 
1116 | 1117 |         });  | 
1117 | 1118 |   }  | 
 | 1119 | + | 
 | 1120 | +  @Test  | 
 | 1121 | +  public void verifyResultSetWithLastTrue() {  | 
 | 1122 | +    long[] longArray = {111, 333, 444, 0, -1, -2234, Long.MAX_VALUE, Long.MIN_VALUE};  | 
 | 1123 | + | 
 | 1124 | +    consumer.onPartialResultSet(  | 
 | 1125 | +        PartialResultSet.newBuilder()  | 
 | 1126 | +            .setMetadata(  | 
 | 1127 | +                makeMetadata(Type.struct(Type.StructField.of("f", Type.array(Type.int64())))))  | 
 | 1128 | +            .addValues(Value.int64Array(longArray).toProto())  | 
 | 1129 | +            .setLast(false)  | 
 | 1130 | +            .build());  | 
 | 1131 | +    assertTrue(resultSet.next());  | 
 | 1132 | +    consumer.onPartialResultSet(  | 
 | 1133 | +        PartialResultSet.newBuilder()  | 
 | 1134 | +            .setMetadata(  | 
 | 1135 | +                makeMetadata(Type.struct(Type.StructField.of("f", Type.array(Type.int64())))))  | 
 | 1136 | +            .addValues(Value.int64Array(longArray).toProto())  | 
 | 1137 | +            .setLast(true)  | 
 | 1138 | +            .build());  | 
 | 1139 | +    assertTrue(resultSet.next());  | 
 | 1140 | +    assertFalse(resultSet.next());  | 
 | 1141 | +    consumer.onCompleted();  | 
 | 1142 | +  }  | 
 | 1143 | + | 
 | 1144 | +  @Test  | 
 | 1145 | +  public void shouldThrowDeadlineExceededIfLastTrueIsNotReceived() {  | 
 | 1146 | +    long[] longArray = {111, 333, 444, 0, -1, -2234, Long.MAX_VALUE, Long.MIN_VALUE};  | 
 | 1147 | + | 
 | 1148 | +    consumer.onPartialResultSet(  | 
 | 1149 | +        PartialResultSet.newBuilder()  | 
 | 1150 | +            .setMetadata(  | 
 | 1151 | +                makeMetadata(Type.struct(Type.StructField.of("f", Type.array(Type.int64())))))  | 
 | 1152 | +            .addValues(Value.int64Array(longArray).toProto())  | 
 | 1153 | +            .setLast(false)  | 
 | 1154 | +            .build());  | 
 | 1155 | +    assertTrue(resultSet.next());  | 
 | 1156 | +    consumer.onPartialResultSet(  | 
 | 1157 | +        PartialResultSet.newBuilder()  | 
 | 1158 | +            .setMetadata(  | 
 | 1159 | +                makeMetadata(Type.struct(Type.StructField.of("f", Type.array(Type.int64())))))  | 
 | 1160 | +            .addValues(Value.int64Array(longArray).toProto())  | 
 | 1161 | +            .setLast(false)  | 
 | 1162 | +            .build());  | 
 | 1163 | +    assertTrue(resultSet.next());  | 
 | 1164 | +    SpannerException spannerException =  | 
 | 1165 | +        assertThrows(  | 
 | 1166 | +            SpannerException.class,  | 
 | 1167 | +            () -> {  | 
 | 1168 | +              assertThat(resultSet.next()).isFalse();  | 
 | 1169 | +            });  | 
 | 1170 | +    assertEquals("DEADLINE_EXCEEDED: stream wait timeout", spannerException.getMessage());  | 
 | 1171 | +    consumer.onCompleted();  | 
 | 1172 | +  }  | 
1118 | 1173 | }  | 
0 commit comments