Index: branches/release-35/t/61-to_from_xml.t
===================================================================
--- branches/release-35/t/61-to_from_xml.t (revision 1104)
+++ branches/release-35/t/61-to_from_xml.t (revision 1948)
@@ -5,5 +5,5 @@
 
 use lib 't/lib', 'extlib', 'lib', '../lib', '../extlib';
-use Test::More tests => 3598;
+use Test::More qw(no_plan);#tests => 3598;
 
 use MT;
@@ -49,9 +49,16 @@
 foreach my $key (keys %$types) {
     next if exists $skip{$key};
-    my @data = MT->model($key)->load;
+    my $iter = MT->model($key)->load_iter;
+    my @data;
+    while ( my $obj = $iter->() ) {
+        push @data, $obj;
+    }
     $oldies{$key} = \@data;
 }
 
 MT::BackupRestore->backup(undef, $printer, sub {}, sub {}, sub { print $_[0], "\n"; }, 0, 'UTF-8');
+open my $fh, '>', 'c:\\temp\\hoge.txt';
+print $fh $backup_data;
+close $fh;
 
 use IO::String;
@@ -61,7 +68,6 @@
 
 is(scalar(keys %deferred), 0);
-print join "\n", @errors;
+warn join "\n", @errors if @errors;
 is(scalar(@errors), 0, 'no error during backup');
-
 &checkthemout(\%oldies, \%objects);
 
@@ -73,4 +79,5 @@
     foreach my $name (keys %$oldies) {
         my $old_objects = $oldies->{$name};
+        my %meta;
         for my $old (@$old_objects) {
             my $class = MT->model($name);
@@ -112,8 +119,14 @@
                     );
                     next if ($ds eq 'category' && ($col eq 'parent'));
-                    # MT::Trackback will always be created upon MT::Entry->save,
-                    # and restore will just skip to restore <trackback> data,
-                    # meaning trackback_created_on will not be restored but newly created.
-                    next if ($name eq 'trackback' && ($col eq 'created_on'));
+                    if ( ($name eq 'trackback') && ($col eq 'is_disabled') ) {
+                        if ( defined($obj->is_disabled) && $obj->is_disabled
+                          && (!defined($obj->entry->allow_pings) || ($obj->entry->allow_pings == 0)) )
+                        {
+                            # is_disabled will be changed upon $entry->save
+                            # and save may occur $comment's post_save trigger
+                            # no harm for the testing purpose, ignore the case.
+                            next;
+                        }
+                    }
                     if ('HASH' eq ref($old->$col)) {
                         is(Dumper($old->$col), Dumper($old->$col), $col);
@@ -125,4 +138,25 @@
                     } else {
                         is($old->$col, $obj->$col, "$class<$col>" . $obj->id);
+                    }
+                }
+            }
+            unless ( exists($meta{ref($obj)}) ) {
+                my @metacolumns = MT::Meta->metadata_by_class( ref($obj) );
+                my %metacolumns = map { $_->{name} => $_->{type} } @metacolumns;
+                $meta{ref($obj)} = \%metacolumns
+            }
+            my $metacolumns = $meta{ref($obj)};
+            foreach my $metacol (keys %$metacolumns) {
+                if ( my $type = $metacolumns->{$metacol} ) {
+                    if ( 'vblob' eq $type ) {
+                        if ( defined($old->$metacol) && defined($obj->$metacol) ) {
+                            is(
+                                MIME::Base64::encode_base64($old->$metacol, ''),
+                                MIME::Base64::encode_base64($obj->$metacol, ''),
+                                "vblob - $metacol");
+                        }
+                    }
+                    else {
+                        is($old->$metacol, $obj->$metacol, "$class<meta:$metacol>" . $obj->id);
                     }
                 }
