You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Sanil Jain (Jira)" <ji...@apache.org> on 2021/09/21 00:26:00 UTC

[jira] [Created] (BEAM-12921) PAssert ignore the Schema fields names for testing

Sanil Jain created BEAM-12921:
---------------------------------

             Summary: PAssert ignore the Schema fields names for testing  
                 Key: BEAM-12921
                 URL: https://issues.apache.org/jira/browse/BEAM-12921
             Project: Beam
          Issue Type: Bug
          Components: dsl-sql
            Reporter: Sanil Jain


Found this bug while testing Select operator that FieldName gets ignored by Passert here, this code passes

beam version 2.26.0.8

```
{code:java}

private static final Schema APP_SCHEMA = Schema.builder()
    .addInt32Field("appId")
    .addStringField("description")
    .addFloatField("rating")
    .build();

@Test
public void testProjectOperator(){
PCollection<Row> projectedOutput = generateTestRow(pipeline).apply(Select.fieldNames("appId", "description"));


// Modified schema with renamed field
Schema modifiedSchema = Schema.builder()
    .addInt32Field("appId")
    .addStringField("randomName")// this should ideally break
    .build();

PAssert.that(projectedOutput).containsInAnyOrder(
    Row.withSchema(modifiedSchema).addValues(-8, "Invalid").build(),
    Row.withSchema(modifiedSchema).addValues(0, "Invalid").build(),
    Row.withSchema(modifiedSchema).addValues(1, "Recruiter").build(),
    Row.withSchema(modifiedSchema).addValues(2, "Hirein").build(),
    Row.withSchema(modifiedSchema).addValues(1, "Workplace").build()
);

pipeline.run().waitUntilFinish();
}


public static PCollection<Row> generateTestRow(Pipeline pipeline) {
  // Create a concrete row with that type.
  return PBegin
          .in(pipeline)
          .apply(Create.of(
              Row.withSchema(APP_SCHEMA).addValues(-8, "Invalid", 0f).build(),
              Row.withSchema(APP_SCHEMA).addValues(0, "Invalid", -1.1f).build(),
              Row.withSchema(APP_SCHEMA).addValues(1, "Recruiter", 4.2f).build(),
              Row.withSchema(APP_SCHEMA).addValues(2, "Hirein", 3.5f).build(),
              Row.withSchema(APP_SCHEMA).addValues(1, "Workplace", 3f).build())
          .withCoder(RowCoder.of(APP_SCHEMA)));
}{code}
 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)