Release Notes - MRUnit - Version 1.0.0

** Sub-task
    * [MRUNIT-144] - Change repository location on MRunit website
    * [MRUNIT-145] - Change repository location on Jenkins
    * [MRUNIT-146] - Change repository location in source code
    * [MRUNIT-172] - Branch trunk should use hadoop 2
    * [MRUNIT-174] - Remove portions of MRUNIT-161 which don't compile on trunk-hadoop1
    * [MRUNIT-176] - Branch trunk-hadoop1 should use hadoop 1

** Bug
    * [MRUNIT-105] - testJavaSerialization methods fail in Java 7 because they do not set a group comparator
    * [MRUNIT-114] - should support calling configure on sorting and grouping comparators if applicable
    * [MRUNIT-115] - set JobConf specific to the inputformat reading the results of the outputformat/copying when not using a real outputformat
    * [MRUNIT-116] - Setting of configuration on Mappers/Reducers in MapDriver and ReduceDriver is inconsistent
    * [MRUNIT-124] - DistributedCache should move files from getCacheFiles to getLocalCacheFiles
    * [MRUNIT-126] - Counter tests are ignored if test is executed using run() rather than runTest()
    * [MRUNIT-127] - Key grouping with GroupingComparators is not consistent with MapReduce behaviour
    * [MRUNIT-130] - Download page does not point to KEYS; no hashes in download area; must not advertise snapshot builds
    * [MRUNIT-131] - Comparators registered using WritableComparator.define are not used during tests
    * [MRUNIT-132] - Spelling mistakes in TestReducerInputValueReuse
    * [MRUNIT-157] - allow null keys and values as output, expected output
    * [MRUNIT-159] - MRUnit not compiling with hadoop 0.23.3
    * [MRUNIT-161] - some distributed cache apis not working - JobContext getCacheArchives()
    * [MRUNIT-163] - getTaskAttemptID is missing from context
    * [MRUNIT-165] - MapReduceDriver calls Mapper#cleanup for each input instead of once
    * [MRUNIT-167] - context passed to an OuputFormatter is ignored by the framework
    * [MRUNIT-178] - Remove portions of MRUNIT-167 on trunk-hadoop1 which do not compile
    * [MRUNIT-179] - Set mapred.output.dir and mapred.input.dir in trunk

** Dependency upgrade
    * [MRUNIT-112] - upgrade hadoop 1 dependency to hadoop-core 1.0.3
    * [MRUNIT-113] - upgrade hadoop 2 dependency to 2.0.0-alpha

** Improvement
    * [MRUNIT-95] - use Serialization framework to change all set/add input/output methods to serialize, deserialize to do defensive copying
    * [MRUNIT-100] - Maven doesn't generate md5/sha1 files automatically
    * [MRUNIT-118] - InputSplit should support a configurable filename
    * [MRUNIT-119] - Counter tests should support assertions that counters are not present
    * [MRUNIT-121] - Configure RAT to ignore IntelliJ IDEA files
    * [MRUNIT-122] - Context should be mockable
    * [MRUNIT-123] - Driver.runTest should not wrap IOException in RuntimeException
    * [MRUNIT-125] - reduce duplicate code related to fluent methods with generics
    * [MRUNIT-133] - MapInput stuff should be moved from TestDriver to MapDriver.
    * [MRUNIT-136] - PipelineMapReduceDriver needs withAll/addAll methods
    * [MRUNIT-137] - Remove duplicated set/add/withOutput methods
    * [MRUNIT-138] - Multiple calls to withInput should be supported
    * [MRUNIT-142] - withKeyGroupingComparator/withKeyOrderComparator should be in MapReduceDriverBase
    * [MRUNIT-158] - withOutput doesn't generate useful information with MapWritable on error
    * [MRUNIT-168] - .gitignore does not exist
    * [MRUNIT-169] - rat exclude does not list .gitignore

** New Feature
    * [MRUNIT-64] - Multiple Input Key, Value Pairs should be supported
    * [MRUNIT-98] - DistributedCache support
    * [MRUNIT-101] - allow use of real OutputFormats such as TextOutputFormat instead of the MockOutputCollector/MockContextWrapper classes

** Task
    * [MRUNIT-104] - move non user classes into internal package
    * [MRUNIT-107] - remove unused internal classes: MockOutputCommitter, MockRawKeyValueIterator and mapreduce.MockReporter
    * [MRUNIT-108] - copy ExtendedAssert.assertListEquals to src/test/java and deprecate entire class and all methods in ExtendedAssert in src/main/java
    * [MRUNIT-110] - remove disclaimer and update links in the pom to new TLP resources
    * [MRUNIT-140] - TestDriver should use composition and have less responsilibities
    * [MRUNIT-141] - Fix grammatical errors in counter log messages
    * [MRUNIT-143] - Handle repository migration to GIT 
    * [MRUNIT-147] - upgrade parent pom to version 11
    * [MRUNIT-149] - bind analyze-only goal from dependency plugin to prepare-package to make sure dependencies are correct
    * [MRUNIT-150] - remove unnecessary log4j dependency

Release Notes - MRUnit - Version 0.9.0

** Bug
    * [MRUNIT-54] - Driver.runTest throws RuntimeException should it throw AssertionError?
    * [MRUNIT-70] - copy(orig, conf) in Serialization shouldn't require objects to have a no-args constructor, and copy(orig, copy, conf) seems to violate contract for deserializer.deserialize()
    * [MRUNIT-77] - cannot use serializations that do not clone into object, or serializations without no arg constructors with reduce driver
    * [MRUNIT-86] - Configuration not passed to individual mappers/reducers in mapred MapReducerDriver, PipelineMapReduceDriver
    * [MRUNIT-97] - InputSplit causes NullPointerException in mapreduce api
    * [MRUNIT-99] - dont force K2 in MapReduceDriver's to be Comparable since Hadoop dont enforce this on the map output key and value classes

** Dependency upgrade
    * [MRUNIT-90] - upgrade junit to 4.10 and change ExpectedSuppliedException to implement TestRule instead 

** Improvement
    * [MRUNIT-45] - MockOutputCollector.deepCopy should use o.a.h.mrunit.Serialization.copy
    * [MRUNIT-46] - Tests should use *Driver.new*Driver factory methods for cleaner code
    * [MRUNIT-48] - Test and Deprecate Driver.{*OutputFromString,*InputFromString} Methods
    * [MRUNIT-49] - o.a.h.mrunit.mapreduce.ReduceDriverBase.ValueClassInstanceReuseList Configuration not modifable
    * [MRUNIT-62] - Add Maven Profile Build Information to BUILD.txt
    * [MRUNIT-65] - return better error message when mapper or reducer is null for MapDriver or ReduceDriver
    * [MRUNIT-66] - null input checks and behavior on no input to a driver are inconsistent
    * [MRUNIT-72] - MRUnit pom.xml should not depend on 0.23.1-SNAPSHOT
    * [MRUNIT-74] - Matching output but at incorrect position is not returned as an Error in the message string thrown in the RuntimeException
    * [MRUNIT-75] - cleanup exception checking in tests to use a @Rule ExpectedException
    * [MRUNIT-85] - Run java conventions formatter that comes with eclipse on all source code
    * [MRUNIT-89] - add static convenience methods to PipelineMapReduceDriver class
    * [MRUNIT-91] - runTest() should optionally ignore output order
    * [MRUNIT-92] - cleanup multiple release profile and javadoc handling in pom
    * [MRUNIT-96] - Cleanup release: remove unnecesssary artifacts from nexus and distribute single binary distribution with 2 build artifacts, 1 for hadoop 1+ and 1 for hadoop 2+

** New Feature
    * [MRUNIT-67] - o.a.h.mrunit.mapreduce.MapReduceDriver should support a combiner
    * [MRUNIT-68] - Support custom counter checking

** Task
    * [MRUNIT-61] - Build separate source and binary tar balls
    * [MRUNIT-94] - upgrade parent pom to version 10 and remove info in pom that is inherited from parent
    * [MRUNIT-103] - JUnit license not in NOTICE.txt in a binary tarball

Release Notes - MRUnit - Version 0.8.1

** Bug
    * [MRUNIT-55] - Hadoop dependency should be 'provided'
    * [MRUNIT-56] - 0.8.0 release does not work with Hadoop 0.23
    * [MRUNIT-58] - Javadoc for org.apache.hadoop.mrunit Package Ends
    * Prematurely

** Improvement
    * [MRUNIT-57] - profile for hadoop 1.0.0

** Task
    * [MRUNIT-59] - Only assemble tar.gz, not .zip
    * [MRUNIT-60] - Remove special characters from classifers


Release Notes - MRUnit - Version 0.8.0

** Sub-task
    * [MRUNIT-27] - Remove unused variables/imports
    * [MRUNIT-28] - remove generic types compiler warnings
    * [MRUNIT-29] - squash warnings for depreciated classes/methods

** Bug
    * [MRUNIT-19] - MRunit ReduceDriver does not fully replicate the reducers
    * behaviour with reusing pointers over the iterator

** Improvement
    * [MRUNIT-14] - Support JobConfigurable and Closable interfaces
    * [MRUNIT-15] - runTests() should throw meaningful error messages
    * [MRUNIT-18] - Squash all compiler warnings
    * [MRUNIT-30] - Methods {add,set}{Input,Output}FromString have poor error
    * messages
    * [MRUNIT-31] - Support Hadoop 0.22 and 0.23
    * [MRUNIT-42] - Push -javadoc.jar and -sources.jar to maven
    * [MRUNIT-44] - Remove AllTests classes
    * [MRUNIT-47] - Change new ArrayList and new HashMap to List.newArrayList
    * and Maps.newHashMap

** New Feature
    * [MRUNIT-43] - Driver methods should have static factory methods similar
    * to Guava Lists.newArrayList()

** Task
    * [MRUNIT-2] - Create a project site


Release Notes - MRUnit - Version 0.5.0

** Bug
    * [MRUNIT-6] - Reverse MAPREDUCE-954 in trunk
    * [MRUNIT-7] - Remove empty MockMapContext.java file accidentally added
    * [MRUNIT-8] - Fix failing testConfiguration tests
    * [MRUNIT-9] - Fix failing testDoubleIteration test
    * [MRUNIT-10] - Version in pom should contain -incubating per policy
    * [MRUNIT-33] - maven assembly fails with no assembly descriptors found

** Improvement
    * [MRUNIT-1] - Port build system to Maven
    * [MRUNIT-11] - Test output should be redirected to files
    * [MRUNIT-17] - Bind maven assembly to package phase
    * [MRUNIT-37] - Use maven deploy plugin

** New Feature
    * [MRUNIT-3] - Add Apache RAT support to the build
    * [MRUNIT-16] - Generate distribution artifacts from maven

** Task
    * [MRUNIT-4] - Create README, LICENSE, and other necessary files for independent release
    * [MRUNIT-5] - Setup CI builds for MRUnit
    * [MRUNIT-20] - Add a KEYS file containing dev pgp keys to the repo 
    * [MRUNIT-21] - Add the ASF incubator disclaimer to the README
    * [MRUNIT-22] - Add build instructions document
    * [MRUNIT-23] - Create a CHANGES file
    * [MRUNIT-24] - Fix RAT license check failures since adding CHANGES file
    * [MRUNIT-25] - Updated BUILD instructions
    * [MRUNIT-32] - Add Brock Noland's key to dist/KEYS file
