blob: c6596059a83947250762fc1ebfe7616654c4c53a [file] [log] [blame]
#!/usr/bin/env perl
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
use strict;
use warnings;
use File::Path qw(make_path);
use IO::File;
use Avro::DataFile;
use Avro::DataFileWriter;
my $schema = do {
my $fh = IO::File->new('../../share/test/schemas/interop.avsc');
local $/ = undef;
<$fh>
};
my $datum = {
intField => 12,
longField => 15234324,
stringField => 'hey',
boolField => 1,
floatField => 1234.0,
doubleField => -1234.0,
bytesField => '12312adf',
nullField => undef,
arrayField => [5.0, 0.0, 12.0],
mapField => {
a => { label => 'a' },
bee => { label => 'cee' },
},
unionField => 12.0,
enumField => 'C',
fixedField => '1019181716151413',
recordField => {
label => 'blah',
children => [ { label => 'inner', children => [] } ]
},
};
while (my ($codec, $enabled) = each(%Avro::DataFile::ValidCodec)) {
next unless $enabled;
my $outdir = '../../build/interop/data';
make_path($outdir);
my $path = sprintf('>%s/perl%s.avro', $outdir,
$codec eq 'null' ? '' : '_'.$codec);
my $fh = IO::File->new($path);
my $writer_schema = Avro::Schema->parse($schema);
my $writer = Avro::DataFileWriter->new(
fh => $fh,
codec => $codec,
writer_schema => $writer_schema
);
$writer->print($datum);
$writer->close;
}