func validateRows()

in spanner_prober/prober/proberlib.go [599:627]


func validateRows(iter *spanner.RowIterator) (int, error) {
	rows := 0
	for {
		row, err := iter.Next()
		if err == iterator.Done {
			return rows, nil
		}
		if err != nil {
			return rows, err
		}

		var id int64
		var payload, payloadHash []byte
		if err := row.Columns(&id, &payload, &payloadHash); err != nil {
			return rows, err
		}

		h := sha256.New()
		_, err = h.Write(payload)
		if err != nil {
			return rows, err
		}
		if calculatedHash := h.Sum(nil); !bytes.Equal(calculatedHash, payloadHash) {
			return rows, fmt.Errorf("hash for row %v did not match, got %v, want %v", id, calculatedHash, payloadHash)
		}

		rows++
	}
}