@ -212,99 +212,99 @@ func getSampleXLMeta(totalParts int) xlMetaV1 {
return xlMeta
return xlMeta
}
}
// Compare the unmarshaled XLMetaV1 with the one obtained from g json parsing.
// Compare the unmarshaled XLMetaV1 with the one obtained from fast json parsing.
func compareXLMetaV1 ( t * testing . T , unMarshalXLMeta , g jsonXLMeta xlMetaV1 ) {
func compareXLMetaV1 ( t * testing . T , unMarshalXLMeta , fast jsonXLMeta xlMetaV1 ) {
// Start comparing the fields of xlMetaV1 obtained from g json parsing with one parsed using json unmarshaling.
// Start comparing the fields of xlMetaV1 obtained from fast json parsing with one parsed using json unmarshaling.
if unMarshalXLMeta . Version != g jsonXLMeta. Version {
if unMarshalXLMeta . Version != fast jsonXLMeta. Version {
t . Errorf ( "Expected the Version to be \"%s\", but got \"%s\"." , unMarshalXLMeta . Version , g jsonXLMeta. Version )
t . Errorf ( "Expected the Version to be \"%s\", but got \"%s\"." , unMarshalXLMeta . Version , fast jsonXLMeta. Version )
}
}
if unMarshalXLMeta . Format != g jsonXLMeta. Format {
if unMarshalXLMeta . Format != fast jsonXLMeta. Format {
t . Errorf ( "Expected the format to be \"%s\", but got \"%s\"." , unMarshalXLMeta . Format , g jsonXLMeta. Format )
t . Errorf ( "Expected the format to be \"%s\", but got \"%s\"." , unMarshalXLMeta . Format , fast jsonXLMeta. Format )
}
}
if unMarshalXLMeta . Stat . Size != g jsonXLMeta. Stat . Size {
if unMarshalXLMeta . Stat . Size != fast jsonXLMeta. Stat . Size {
t . Errorf ( "Expected the stat size to be %v, but got %v." , unMarshalXLMeta . Stat . Size , g jsonXLMeta. Stat . Size )
t . Errorf ( "Expected the stat size to be %v, but got %v." , unMarshalXLMeta . Stat . Size , fast jsonXLMeta. Stat . Size )
}
}
if ! unMarshalXLMeta . Stat . ModTime . Equal ( g jsonXLMeta. Stat . ModTime ) {
if ! unMarshalXLMeta . Stat . ModTime . Equal ( fast jsonXLMeta. Stat . ModTime ) {
t . Errorf ( "Expected the modTime to be \"%v\", but got \"%v\"." , unMarshalXLMeta . Stat . ModTime , g jsonXLMeta. Stat . ModTime )
t . Errorf ( "Expected the modTime to be \"%v\", but got \"%v\"." , unMarshalXLMeta . Stat . ModTime , fast jsonXLMeta. Stat . ModTime )
}
}
if unMarshalXLMeta . Erasure . Algorithm != g jsonXLMeta. Erasure . Algorithm {
if unMarshalXLMeta . Erasure . Algorithm != fast jsonXLMeta. Erasure . Algorithm {
t . Errorf ( "Expected the erasure algorithm to be \"%v\", but got \"%v\"." , unMarshalXLMeta . Erasure . Algorithm , g jsonXLMeta. Erasure . Algorithm )
t . Errorf ( "Expected the erasure algorithm to be \"%v\", but got \"%v\"." , unMarshalXLMeta . Erasure . Algorithm , fast jsonXLMeta. Erasure . Algorithm )
}
}
if unMarshalXLMeta . Erasure . DataBlocks != g jsonXLMeta. Erasure . DataBlocks {
if unMarshalXLMeta . Erasure . DataBlocks != fast jsonXLMeta. Erasure . DataBlocks {
t . Errorf ( "Expected the erasure data blocks to be %v, but got %v." , unMarshalXLMeta . Erasure . DataBlocks , g jsonXLMeta. Erasure . DataBlocks )
t . Errorf ( "Expected the erasure data blocks to be %v, but got %v." , unMarshalXLMeta . Erasure . DataBlocks , fast jsonXLMeta. Erasure . DataBlocks )
}
}
if unMarshalXLMeta . Erasure . ParityBlocks != g jsonXLMeta. Erasure . ParityBlocks {
if unMarshalXLMeta . Erasure . ParityBlocks != fast jsonXLMeta. Erasure . ParityBlocks {
t . Errorf ( "Expected the erasure parity blocks to be %v, but got %v." , unMarshalXLMeta . Erasure . ParityBlocks , g jsonXLMeta. Erasure . ParityBlocks )
t . Errorf ( "Expected the erasure parity blocks to be %v, but got %v." , unMarshalXLMeta . Erasure . ParityBlocks , fast jsonXLMeta. Erasure . ParityBlocks )
}
}
if unMarshalXLMeta . Erasure . BlockSize != g jsonXLMeta. Erasure . BlockSize {
if unMarshalXLMeta . Erasure . BlockSize != fast jsonXLMeta. Erasure . BlockSize {
t . Errorf ( "Expected the erasure block size to be %v, but got %v." , unMarshalXLMeta . Erasure . BlockSize , g jsonXLMeta. Erasure . BlockSize )
t . Errorf ( "Expected the erasure block size to be %v, but got %v." , unMarshalXLMeta . Erasure . BlockSize , fast jsonXLMeta. Erasure . BlockSize )
}
}
if unMarshalXLMeta . Erasure . Index != g jsonXLMeta. Erasure . Index {
if unMarshalXLMeta . Erasure . Index != fast jsonXLMeta. Erasure . Index {
t . Errorf ( "Expected the erasure index to be %v, but got %v." , unMarshalXLMeta . Erasure . Index , g jsonXLMeta. Erasure . Index )
t . Errorf ( "Expected the erasure index to be %v, but got %v." , unMarshalXLMeta . Erasure . Index , fast jsonXLMeta. Erasure . Index )
}
}
if len ( unMarshalXLMeta . Erasure . Distribution ) != len ( g jsonXLMeta. Erasure . Distribution ) {
if len ( unMarshalXLMeta . Erasure . Distribution ) != len ( fast jsonXLMeta. Erasure . Distribution ) {
t . Errorf ( "Expected the size of Erasure Distribution to be %d, but got %d." , len ( unMarshalXLMeta . Erasure . Distribution ) , len ( g jsonXLMeta. Erasure . Distribution ) )
t . Errorf ( "Expected the size of Erasure Distribution to be %d, but got %d." , len ( unMarshalXLMeta . Erasure . Distribution ) , len ( fast jsonXLMeta. Erasure . Distribution ) )
} else {
} else {
for i := 0 ; i < len ( unMarshalXLMeta . Erasure . Distribution ) ; i ++ {
for i := 0 ; i < len ( unMarshalXLMeta . Erasure . Distribution ) ; i ++ {
if unMarshalXLMeta . Erasure . Distribution [ i ] != g jsonXLMeta. Erasure . Distribution [ i ] {
if unMarshalXLMeta . Erasure . Distribution [ i ] != fast jsonXLMeta. Erasure . Distribution [ i ] {
t . Errorf ( "Expected the Erasure Distribution to be %d, got %d." , unMarshalXLMeta . Erasure . Distribution [ i ] , g jsonXLMeta. Erasure . Distribution [ i ] )
t . Errorf ( "Expected the Erasure Distribution to be %d, got %d." , unMarshalXLMeta . Erasure . Distribution [ i ] , fast jsonXLMeta. Erasure . Distribution [ i ] )
}
}
}
}
}
}
if len ( unMarshalXLMeta . Erasure . Checksums ) != len ( g jsonXLMeta. Erasure . Checksums ) {
if len ( unMarshalXLMeta . Erasure . Checksums ) != len ( fast jsonXLMeta. Erasure . Checksums ) {
t . Errorf ( "Expected the size of Erasure Checksums to be %d, but got %d." , len ( unMarshalXLMeta . Erasure . Checksums ) , len ( g jsonXLMeta. Erasure . Checksums ) )
t . Errorf ( "Expected the size of Erasure Checksums to be %d, but got %d." , len ( unMarshalXLMeta . Erasure . Checksums ) , len ( fast jsonXLMeta. Erasure . Checksums ) )
} else {
} else {
for i := 0 ; i < len ( unMarshalXLMeta . Erasure . Checksums ) ; i ++ {
for i := 0 ; i < len ( unMarshalXLMeta . Erasure . Checksums ) ; i ++ {
if unMarshalXLMeta . Erasure . Checksums [ i ] . Name != g jsonXLMeta. Erasure . Checksums [ i ] . Name {
if unMarshalXLMeta . Erasure . Checksums [ i ] . Name != fast jsonXLMeta. Erasure . Checksums [ i ] . Name {
t . Errorf ( "Expected the Erasure Checksum Name to be \"%s\", got \"%s\"." , unMarshalXLMeta . Erasure . Checksums [ i ] . Name , g jsonXLMeta. Erasure . Checksums [ i ] . Name )
t . Errorf ( "Expected the Erasure Checksum Name to be \"%s\", got \"%s\"." , unMarshalXLMeta . Erasure . Checksums [ i ] . Name , fast jsonXLMeta. Erasure . Checksums [ i ] . Name )
}
}
if unMarshalXLMeta . Erasure . Checksums [ i ] . Algorithm != g jsonXLMeta. Erasure . Checksums [ i ] . Algorithm {
if unMarshalXLMeta . Erasure . Checksums [ i ] . Algorithm != fast jsonXLMeta. Erasure . Checksums [ i ] . Algorithm {
t . Errorf ( "Expected the Erasure Checksum Algorithm to be \"%s\", got \"%s\"." , unMarshalXLMeta . Erasure . Checksums [ i ] . Algorithm , g jsonXLMeta. Erasure . Checksums [ i ] . Algorithm )
t . Errorf ( "Expected the Erasure Checksum Algorithm to be \"%s\", got \"%s\"." , unMarshalXLMeta . Erasure . Checksums [ i ] . Algorithm , fast jsonXLMeta. Erasure . Checksums [ i ] . Algorithm )
}
}
if ! bytes . Equal ( unMarshalXLMeta . Erasure . Checksums [ i ] . Hash , g jsonXLMeta. Erasure . Checksums [ i ] . Hash ) {
if ! bytes . Equal ( unMarshalXLMeta . Erasure . Checksums [ i ] . Hash , fast jsonXLMeta. Erasure . Checksums [ i ] . Hash ) {
t . Errorf ( "Expected the Erasure Checksum Hash to be \"%s\", got \"%s\"." , unMarshalXLMeta . Erasure . Checksums [ i ] . Hash , g jsonXLMeta. Erasure . Checksums [ i ] . Hash )
t . Errorf ( "Expected the Erasure Checksum Hash to be \"%s\", got \"%s\"." , unMarshalXLMeta . Erasure . Checksums [ i ] . Hash , fast jsonXLMeta. Erasure . Checksums [ i ] . Hash )
}
}
}
}
}
}
if unMarshalXLMeta . Minio . Release != g jsonXLMeta. Minio . Release {
if unMarshalXLMeta . Minio . Release != fast jsonXLMeta. Minio . Release {
t . Errorf ( "Expected the Release string to be \"%s\", but got \"%s\"." , unMarshalXLMeta . Minio . Release , g jsonXLMeta. Minio . Release )
t . Errorf ( "Expected the Release string to be \"%s\", but got \"%s\"." , unMarshalXLMeta . Minio . Release , fast jsonXLMeta. Minio . Release )
}
}
if len ( unMarshalXLMeta . Parts ) != len ( g jsonXLMeta. Parts ) {
if len ( unMarshalXLMeta . Parts ) != len ( fast jsonXLMeta. Parts ) {
t . Errorf ( "Expected info of %d parts to be present, but got %d instead." , len ( unMarshalXLMeta . Parts ) , len ( g jsonXLMeta. Parts ) )
t . Errorf ( "Expected info of %d parts to be present, but got %d instead." , len ( unMarshalXLMeta . Parts ) , len ( fast jsonXLMeta. Parts ) )
} else {
} else {
for i := 0 ; i < len ( unMarshalXLMeta . Parts ) ; i ++ {
for i := 0 ; i < len ( unMarshalXLMeta . Parts ) ; i ++ {
if unMarshalXLMeta . Parts [ i ] . Name != g jsonXLMeta. Parts [ i ] . Name {
if unMarshalXLMeta . Parts [ i ] . Name != fast jsonXLMeta. Parts [ i ] . Name {
t . Errorf ( "Expected the name of part %d to be \"%s\", got \"%s\"." , i + 1 , unMarshalXLMeta . Parts [ i ] . Name , g jsonXLMeta. Parts [ i ] . Name )
t . Errorf ( "Expected the name of part %d to be \"%s\", got \"%s\"." , i + 1 , unMarshalXLMeta . Parts [ i ] . Name , fast jsonXLMeta. Parts [ i ] . Name )
}
}
if unMarshalXLMeta . Parts [ i ] . ETag != g jsonXLMeta. Parts [ i ] . ETag {
if unMarshalXLMeta . Parts [ i ] . ETag != fast jsonXLMeta. Parts [ i ] . ETag {
t . Errorf ( "Expected the ETag of part %d to be \"%s\", got \"%s\"." , i + 1 , unMarshalXLMeta . Parts [ i ] . ETag , g jsonXLMeta. Parts [ i ] . ETag )
t . Errorf ( "Expected the ETag of part %d to be \"%s\", got \"%s\"." , i + 1 , unMarshalXLMeta . Parts [ i ] . ETag , fast jsonXLMeta. Parts [ i ] . ETag )
}
}
if unMarshalXLMeta . Parts [ i ] . Number != g jsonXLMeta. Parts [ i ] . Number {
if unMarshalXLMeta . Parts [ i ] . Number != fast jsonXLMeta. Parts [ i ] . Number {
t . Errorf ( "Expected the number of part %d to be \"%d\", got \"%d\"." , i + 1 , unMarshalXLMeta . Parts [ i ] . Number , g jsonXLMeta. Parts [ i ] . Number )
t . Errorf ( "Expected the number of part %d to be \"%d\", got \"%d\"." , i + 1 , unMarshalXLMeta . Parts [ i ] . Number , fast jsonXLMeta. Parts [ i ] . Number )
}
}
if unMarshalXLMeta . Parts [ i ] . Size != g jsonXLMeta. Parts [ i ] . Size {
if unMarshalXLMeta . Parts [ i ] . Size != fast jsonXLMeta. Parts [ i ] . Size {
t . Errorf ( "Expected the size of part %d to be %v, got %v." , i + 1 , unMarshalXLMeta . Parts [ i ] . Size , g jsonXLMeta. Parts [ i ] . Size )
t . Errorf ( "Expected the size of part %d to be %v, got %v." , i + 1 , unMarshalXLMeta . Parts [ i ] . Size , fast jsonXLMeta. Parts [ i ] . Size )
}
}
}
}
}
}
for key , val := range unMarshalXLMeta . Meta {
for key , val := range unMarshalXLMeta . Meta {
g jsonVal, exists := g jsonXLMeta. Meta [ key ]
fast jsonVal, exists := fast jsonXLMeta. Meta [ key ]
if ! exists {
if ! exists {
t . Errorf ( "No meta data entry for Key \"%s\" exists." , key )
t . Errorf ( "No meta data entry for Key \"%s\" exists." , key )
}
}
if val != g jsonVal {
if val != fast jsonVal {
t . Errorf ( "Expected the value for Meta data key \"%s\" to be \"%s\", but got \"%s\"." , key , val , g jsonVal)
t . Errorf ( "Expected the value for Meta data key \"%s\" to be \"%s\", but got \"%s\"." , key , val , fast jsonVal)
}
}
}
}
}
}
// Tests the correctness of constructing XLMetaV1 using g json lib.
// Tests the correctness of constructing XLMetaV1 using fast json lib.
// The result will be compared with the result obtained from json.unMarshal of the byte data.
// The result will be compared with the result obtained from json.unMarshal of the byte data.
func TestGetXLMetaV1GJ son1 ( t * testing . T ) {
func TestGetXLMetaV1Fastj son1 ( t * testing . T ) {
xlMetaJSON := getXLMetaBytes ( 1 )
xlMetaJSON := getXLMetaBytes ( 1 )
var unMarshalXLMeta xlMetaV1
var unMarshalXLMeta xlMetaV1
@ -312,16 +312,16 @@ func TestGetXLMetaV1GJson1(t *testing.T) {
t . Errorf ( "Unmarshalling failed: %v" , err )
t . Errorf ( "Unmarshalling failed: %v" , err )
}
}
g jsonXLMeta, err := xlMetaV1UnmarshalJSON ( context . Background ( ) , xlMetaJSON )
fast jsonXLMeta, err := xlMetaV1UnmarshalJSON ( context . Background ( ) , xlMetaJSON )
if err != nil {
if err != nil {
t . Errorf ( "g json parsing of XLMeta failed: %v" , err )
t . Errorf ( "fast json parsing of XLMeta failed: %v" , err )
}
}
compareXLMetaV1 ( t , unMarshalXLMeta , g jsonXLMeta)
compareXLMetaV1 ( t , unMarshalXLMeta , fast jsonXLMeta)
}
}
// Tests the correctness of constructing XLMetaV1 using g json lib for XLMetaV1 of size 10 parts.
// Tests the correctness of constructing XLMetaV1 using fast json lib for XLMetaV1 of size 10 parts.
// The result will be compared with the result obtained from json.unMarshal of the byte data.
// The result will be compared with the result obtained from json.unMarshal of the byte data.
func TestGetXLMetaV1GJ son10 ( t * testing . T ) {
func TestGetXLMetaV1Fastj son10 ( t * testing . T ) {
xlMetaJSON := getXLMetaBytes ( 10 )
xlMetaJSON := getXLMetaBytes ( 10 )
@ -329,11 +329,11 @@ func TestGetXLMetaV1GJson10(t *testing.T) {
if err := json . Unmarshal ( xlMetaJSON , & unMarshalXLMeta ) ; err != nil {
if err := json . Unmarshal ( xlMetaJSON , & unMarshalXLMeta ) ; err != nil {
t . Errorf ( "Unmarshalling failed: %v" , err )
t . Errorf ( "Unmarshalling failed: %v" , err )
}
}
g jsonXLMeta, err := xlMetaV1UnmarshalJSON ( context . Background ( ) , xlMetaJSON )
fast jsonXLMeta, err := xlMetaV1UnmarshalJSON ( context . Background ( ) , xlMetaJSON )
if err != nil {
if err != nil {
t . Errorf ( "g json parsing of XLMeta failed: %v" , err )
t . Errorf ( "fast json parsing of XLMeta failed: %v" , err )
}
}
compareXLMetaV1 ( t , unMarshalXLMeta , g jsonXLMeta)
compareXLMetaV1 ( t , unMarshalXLMeta , fast jsonXLMeta)
}
}
// Test the predicted part size from the part index
// Test the predicted part size from the part index