Return-Path: X-Original-To: apmail-avro-commits-archive@www.apache.org Delivered-To: apmail-avro-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1E3B318295 for ; Fri, 10 Jul 2015 15:20:44 +0000 (UTC) Received: (qmail 60647 invoked by uid 500); 10 Jul 2015 15:20:44 -0000 Delivered-To: apmail-avro-commits-archive@avro.apache.org Received: (qmail 60615 invoked by uid 500); 10 Jul 2015 15:20:44 -0000 Mailing-List: contact commits-help@avro.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@avro.apache.org Delivered-To: mailing list commits@avro.apache.org Received: (qmail 60605 invoked by uid 99); 10 Jul 2015 15:20:44 -0000 Received: from eris.apache.org (HELO hades.apache.org) (140.211.11.105) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 Jul 2015 15:20:44 +0000 Received: from hades.apache.org (localhost [127.0.0.1]) by hades.apache.org (ASF Mail Server at hades.apache.org) with ESMTP id CA212AC0051 for ; Fri, 10 Jul 2015 15:20:43 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1690276 - in /avro/trunk: CHANGES.txt lang/ruby/Gemfile lang/ruby/lib/avro/data_file.rb lang/ruby/test/test_datafile.rb Date: Fri, 10 Jul 2015 15:20:43 -0000 To: commits@avro.apache.org From: tomwhite@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20150710152043.CA212AC0051@hades.apache.org> Author: tomwhite Date: Fri Jul 10 15:20:43 2015 New Revision: 1690276 URL: http://svn.apache.org/r1690276 Log: AVRO-1697. Ruby: Add support for the Snappy codec to the Ruby library. Contributed by Daniel Schierbeck. Modified: avro/trunk/CHANGES.txt avro/trunk/lang/ruby/Gemfile avro/trunk/lang/ruby/lib/avro/data_file.rb avro/trunk/lang/ruby/test/test_datafile.rb Modified: avro/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1690276&r1=1690275&r2=1690276&view=diff ============================================================================== --- avro/trunk/CHANGES.txt (original) +++ avro/trunk/CHANGES.txt Fri Jul 10 15:20:43 2015 @@ -95,6 +95,9 @@ Trunk (not yet released) AVRO-1693. Ruby: Allow writing arbitrary metadata to data files. (Daniel Schierbeck via tomwhite) + AVRO-1697. Ruby: Add support for the Snappy codec to the Ruby library. + (Daniel Schierbeck via tomwhite) + BUG FIXES AVRO-1553. Java: MapReduce never uses MapOutputValueSchema (tomwhite) Modified: avro/trunk/lang/ruby/Gemfile URL: http://svn.apache.org/viewvc/avro/trunk/lang/ruby/Gemfile?rev=1690276&r1=1690275&r2=1690276&view=diff ============================================================================== --- avro/trunk/lang/ruby/Gemfile (original) +++ avro/trunk/lang/ruby/Gemfile Fri Jul 10 15:20:43 2015 @@ -17,3 +17,4 @@ source 'https://rubygems.org' gem 'rake' gem 'echoe' gem 'multi_json' +gem 'snappy' Modified: avro/trunk/lang/ruby/lib/avro/data_file.rb URL: http://svn.apache.org/viewvc/avro/trunk/lang/ruby/lib/avro/data_file.rb?rev=1690276&r1=1690275&r2=1690276&view=diff ============================================================================== --- avro/trunk/lang/ruby/lib/avro/data_file.rb (original) +++ avro/trunk/lang/ruby/lib/avro/data_file.rb Fri Jul 10 15:20:43 2015 @@ -333,8 +333,31 @@ module Avro end end + class SnappyCodec + def codec_name; 'snappy'; end + + def decompress(data) + load_snappy! + Snappy.inflate(data) + end + + def compress(data) + load_snappy! + Snappy.deflate(data) + end + + private + + def load_snappy! + require 'snappy' unless defined?(Snappy) + rescue LoadError + raise LoadError, "Snappy compression is not available, please install the `snappy` gem." + end + end + DataFile.register_codec NullCodec DataFile.register_codec DeflateCodec + DataFile.register_codec SnappyCodec # TODO this constant won't be updated if you register another codec. # Deprecated in favor of Avro::DataFile::codecs Modified: avro/trunk/lang/ruby/test/test_datafile.rb URL: http://svn.apache.org/viewvc/avro/trunk/lang/ruby/test/test_datafile.rb?rev=1690276&r1=1690275&r2=1690276&view=diff ============================================================================== --- avro/trunk/lang/ruby/test/test_datafile.rb (original) +++ avro/trunk/lang/ruby/test/test_datafile.rb Fri Jul 10 15:20:43 2015 @@ -167,6 +167,19 @@ JSON assert_equal records, ['a' * 10_000] end + def test_snappy + Avro::DataFile.open('data.avr', 'w', '"string"', :snappy) do |writer| + writer << 'a' * 10_000 + end + assert(File.size('data.avr') < 600) + + records = [] + Avro::DataFile.open('data.avr') do |reader| + reader.each {|record| records << record } + end + assert_equal records, ['a' * 10_000] + end + def test_append_to_deflated_file schema = Avro::Schema.parse('"string"') writer = Avro::IO::DatumWriter.new(schema)