diff --git a/core/modules/migrate_drupal/src/Tests/Dump/Drupal6DumpBase.php b/core/modules/migrate_drupal/src/Tests/Dump/Drupal6DumpBase.php
index c340f4c..e40bf2b 100644
--- a/core/modules/migrate_drupal/src/Tests/Dump/Drupal6DumpBase.php
+++ b/core/modules/migrate_drupal/src/Tests/Dump/Drupal6DumpBase.php
@@ -42,7 +42,9 @@ protected function createTable($name, $table = NULL) {
     // This must be on the database connection to be shared among classes.
     if (empty($this->database->migrateTables[$name])) {
       $this->database->migrateTables[$name] = TRUE;
-      $this->database->schema()->createTable($name, $table ?: $this->tableDefinitions()[$name]);
+      if (!$this->database->schema()->tableExists($name)) {
+        $this->database->schema()->createTable($name, $table ?: $this->tableDefinitions()[$name]);
+      }
     }
   }
 
diff --git a/core/modules/migrate_drupal/src/Tests/MigrateDrupalTestBase.php b/core/modules/migrate_drupal/src/Tests/MigrateDrupalTestBase.php
index 91e20ff..37b5860 100644
--- a/core/modules/migrate_drupal/src/Tests/MigrateDrupalTestBase.php
+++ b/core/modules/migrate_drupal/src/Tests/MigrateDrupalTestBase.php
@@ -28,7 +28,7 @@
    *   A string that represents the dump directory path.
    */
   protected function getDumpDirectory() {
-    return __DIR__ . '/Dump';
+    return __DIR__ . '/Table';
   }
 
 }
diff --git a/core/modules/migrate_drupal/src/Tests/Table/AggregatorFeed.php b/core/modules/migrate_drupal/src/Tests/Table/AggregatorFeed.php
new file mode 100644
index 0000000..e57f5bf
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/AggregatorFeed.php
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\AggregatorFeed.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the aggregator_feed table.
+ */
+class AggregatorFeed extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("aggregator_feed", array(
+  'fields' => array(
+    'fid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'url' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'refresh' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'checked' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'link' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'description' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'image' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'etag' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'modified' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'block' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("aggregator_feed")->fields(array(
+  'fid',
+  'title',
+  'url',
+  'refresh',
+  'checked',
+  'link',
+  'description',
+  'image',
+  'etag',
+  'modified',
+  'block',
+))
+    ->values(array(
+  'fid' => '5',
+  'title' => 'Know Your Meme',
+  'url' => 'http://knowyourmeme.com/newsfeed.rss',
+  'refresh' => '900',
+  'checked' => '1387659487',
+  'link' => 'http://knowyourmeme.com',
+  'description' => 'New items added to the News Feed',
+  'image' => 'http://b.thumbs.redditmedia.com/harEHsUUZVajabtC.png',
+  'etag' => '"213cc1365b96c310e92053c5551f0504"',
+  'modified' => '0',
+  'block' => '5',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/AggregatorItem.php b/core/modules/migrate_drupal/src/Tests/Table/AggregatorItem.php
new file mode 100644
index 0000000..bb4fbea
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/AggregatorItem.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\AggregatorItem.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the aggregator_item table.
+ */
+class AggregatorItem extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("aggregator_item", array(
+  'fields' => array(
+    'iid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+    ),
+    'fid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'link' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'author' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'description' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'timestamp' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'length' => '11',
+    ),
+    'guid' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+  ),
+));
+    $this->database->insert("aggregator_item")->fields(array(
+  'iid',
+  'fid',
+  'title',
+  'link',
+  'author',
+  'description',
+  'timestamp',
+  'guid',
+))
+    ->values(array(
+  'iid' => '1',
+  'fid' => '5',
+  'title' => 'This (three) weeks in Drupal Core - January 10th 2014',
+  'link' => 'https://groups.drupal.org/node/395218',
+  'author' => 'larowlan',
+  'description' => "<h2 id='new'>What's new with Drupal 8?</h2>",
+  'timestamp' => '1389297196',
+  'guid' => '395218 at https://groups.drupal.org',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Blocks.php b/core/modules/migrate_drupal/src/Tests/Table/Blocks.php
new file mode 100644
index 0000000..d081db7
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Blocks.php
@@ -0,0 +1,299 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Blocks.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the blocks table.
+ */
+class Blocks extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("blocks", array(
+  'fields' => array(
+    'bid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '64',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '0',
+    ),
+    'theme' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '64',
+      'default' => '',
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'region' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '64',
+      'default' => '',
+    ),
+    'custom' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'throttle' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'visibility' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'pages' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '64',
+      'default' => '',
+    ),
+    'cache' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '1',
+    ),
+  ),
+));
+    $this->database->insert("blocks")->fields(array(
+  'bid',
+  'module',
+  'delta',
+  'theme',
+  'status',
+  'weight',
+  'region',
+  'custom',
+  'throttle',
+  'visibility',
+  'pages',
+  'title',
+  'cache',
+))
+    ->values(array(
+  'bid' => '1',
+  'module' => 'user',
+  'delta' => '0',
+  'theme' => 'garland',
+  'status' => '1',
+  'weight' => '0',
+  'region' => 'left',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '2',
+  'module' => 'user',
+  'delta' => '1',
+  'theme' => 'garland',
+  'status' => '1',
+  'weight' => '0',
+  'region' => 'left',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '3',
+  'module' => 'system',
+  'delta' => '0',
+  'theme' => 'garland',
+  'status' => '1',
+  'weight' => '-5',
+  'region' => 'footer',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '4',
+  'module' => 'comment',
+  'delta' => '0',
+  'theme' => 'garland',
+  'status' => '0',
+  'weight' => '-6',
+  'region' => '',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '1',
+))->values(array(
+  'bid' => '5',
+  'module' => 'menu',
+  'delta' => 'primary-links',
+  'theme' => 'garland',
+  'status' => '1',
+  'weight' => '-5',
+  'region' => 'header',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '6',
+  'module' => 'menu',
+  'delta' => 'secondary-links',
+  'theme' => 'garland',
+  'status' => '0',
+  'weight' => '-5',
+  'region' => '',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '7',
+  'module' => 'node',
+  'delta' => '0',
+  'theme' => 'garland',
+  'status' => '0',
+  'weight' => '-4',
+  'region' => '',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '8',
+  'module' => 'user',
+  'delta' => '2',
+  'theme' => 'garland',
+  'status' => '0',
+  'weight' => '-3',
+  'region' => '',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '1',
+))->values(array(
+  'bid' => '9',
+  'module' => 'user',
+  'delta' => '3',
+  'theme' => 'garland',
+  'status' => '0',
+  'weight' => '-1',
+  'region' => '',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '10',
+  'module' => 'block',
+  'delta' => '1',
+  'theme' => 'garland',
+  'status' => '1',
+  'weight' => '0',
+  'region' => 'content',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '1',
+  'pages' => '<front>',
+  'title' => 'Static Block',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '11',
+  'module' => 'block',
+  'delta' => '2',
+  'theme' => 'bluemarine',
+  'status' => '1',
+  'weight' => '-4',
+  'region' => 'right',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '1',
+  'pages' => 'node',
+  'title' => 'Another Static Block',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '12',
+  'module' => 'block',
+  'delta' => '1',
+  'theme' => 'test_theme',
+  'status' => '1',
+  'weight' => '-7',
+  'region' => 'right',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+))->values(array(
+  'bid' => '13',
+  'module' => 'block',
+  'delta' => '2',
+  'theme' => 'test_theme',
+  'status' => '1',
+  'weight' => '-2',
+  'region' => 'left',
+  'custom' => '0',
+  'throttle' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/BlocksRoles.php b/core/modules/migrate_drupal/src/Tests/Table/BlocksRoles.php
new file mode 100644
index 0000000..289dd6e
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/BlocksRoles.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\BlocksRoles.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the blocks_roles table.
+ */
+class BlocksRoles extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("blocks_roles", array(
+  'fields' => array(
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '64',
+    ),
+    'delta' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+    ),
+    'rid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("blocks_roles")->fields(array(
+  'module',
+  'delta',
+  'rid',
+))
+    
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Book.php b/core/modules/migrate_drupal/src/Tests/Table/Book.php
new file mode 100644
index 0000000..d73fbbe
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Book.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Book.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the book table.
+ */
+class Book extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("book", array(
+  'fields' => array(
+    'mlid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'bid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("book")->fields(array(
+  'mlid',
+  'nid',
+  'bid',
+))
+    ->values(array(
+  'mlid' => '1',
+  'nid' => '4',
+  'bid' => '4',
+))->values(array(
+  'mlid' => '2',
+  'nid' => '5',
+  'bid' => '4',
+))->values(array(
+  'mlid' => '3',
+  'nid' => '6',
+  'bid' => '4',
+))->values(array(
+  'mlid' => '4',
+  'nid' => '7',
+  'bid' => '4',
+))->values(array(
+  'mlid' => '5',
+  'nid' => '8',
+  'bid' => '8',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Boxes.php b/core/modules/migrate_drupal/src/Tests/Table/Boxes.php
new file mode 100644
index 0000000..cf3c026
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Boxes.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Boxes.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the boxes table.
+ */
+class Boxes extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("boxes", array(
+  'fields' => array(
+    'bid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'body' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+    'info' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'format' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("boxes")->fields(array(
+  'bid',
+  'body',
+  'info',
+  'format',
+))
+    ->values(array(
+  'bid' => '1',
+  'body' => '<h3>My first custom block body</h3>',
+  'info' => 'My block 1',
+  'format' => '2',
+))->values(array(
+  'bid' => '2',
+  'body' => '<h3>My second custom block body</h3>',
+  'info' => 'My block 2',
+  'format' => '2',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Comments.php b/core/modules/migrate_drupal/src/Tests/Table/Comments.php
new file mode 100644
index 0000000..9406890
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Comments.php
@@ -0,0 +1,166 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Comments.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the comments table.
+ */
+class Comments extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("comments", array(
+  'fields' => array(
+    'cid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+    ),
+    'pid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'subject' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '64',
+      'default' => '',
+    ),
+    'comment' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'hostname' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'timestamp' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '3',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'format' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+    'thread' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '60',
+    ),
+    'mail' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '64',
+    ),
+    'homepage' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+  ),
+));
+    $this->database->insert("comments")->fields(array(
+  'cid',
+  'pid',
+  'nid',
+  'uid',
+  'subject',
+  'comment',
+  'hostname',
+  'timestamp',
+  'status',
+  'format',
+  'thread',
+  'name',
+  'mail',
+  'homepage',
+))
+    ->values(array(
+  'cid' => '1',
+  'pid' => '0',
+  'nid' => '1',
+  'uid' => '0',
+  'subject' => 'The first comment.',
+  'comment' => 'The first comment body.',
+  'hostname' => '127.0.0.1',
+  'timestamp' => '1390264918',
+  'status' => '0',
+  'format' => '1',
+  'thread' => '01/',
+  'name' => '1st comment author name',
+  'mail' => 'comment1@example.com',
+  'homepage' => 'http://drupal.org',
+))->values(array(
+  'cid' => '2',
+  'pid' => '3',
+  'nid' => '1',
+  'uid' => '0',
+  'subject' => 'The response to the second comment.',
+  'comment' => 'The second comment response body.',
+  'hostname' => '127.0.0.1',
+  'timestamp' => '1390264938',
+  'status' => '0',
+  'format' => '1',
+  'thread' => '02/01',
+  'name' => '3rd comment author name',
+  'mail' => 'comment3@example.com',
+  'homepage' => 'http://drupal.org',
+))->values(array(
+  'cid' => '3',
+  'pid' => '0',
+  'nid' => '1',
+  'uid' => '0',
+  'subject' => 'The second comment.',
+  'comment' => 'The second comment body.',
+  'hostname' => '127.0.0.1',
+  'timestamp' => '1390264948',
+  'status' => '1',
+  'format' => '1',
+  'thread' => '02/',
+  'name' => '3rd comment author name',
+  'mail' => 'comment3@example.com',
+  'homepage' => 'http://drupal.org',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Contact.php b/core/modules/migrate_drupal/src/Tests/Table/Contact.php
new file mode 100644
index 0000000..f65598b
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Contact.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Contact.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the contact table.
+ */
+class Contact extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("contact", array(
+  'fields' => array(
+    'cid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'category' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'recipients' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'reply' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'selected' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("contact")->fields(array(
+  'cid',
+  'category',
+  'recipients',
+  'reply',
+  'weight',
+  'selected',
+))
+    ->values(array(
+  'cid' => '1',
+  'category' => 'Website feedback',
+  'recipients' => 'admin@example.com',
+  'reply' => '',
+  'weight' => '0',
+  'selected' => '0',
+))->values(array(
+  'cid' => '2',
+  'category' => 'Some other category',
+  'recipients' => 'test@example.com',
+  'reply' => 'Thanks for contacting us, we will reply ASAP!',
+  'weight' => '1',
+  'selected' => '1',
+))->values(array(
+  'cid' => '3',
+  'category' => 'A category much longer than thirty two characters',
+  'recipients' => 'fortyninechars@example.com',
+  'reply' => '',
+  'weight' => '2',
+  'selected' => '0',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ContentFieldMultivalue.php b/core/modules/migrate_drupal/src/Tests/Table/ContentFieldMultivalue.php
new file mode 100644
index 0000000..57d034a
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ContentFieldMultivalue.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ContentFieldMultivalue.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the content_field_multivalue table.
+ */
+class ContentFieldMultivalue extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("content_field_multivalue", array(
+  'fields' => array(
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'field_multivalue_value' => array(
+      'type' => 'numeric',
+      'not null' => FALSE,
+      'precision' => '10',
+      'scale' => '2',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("content_field_multivalue")->fields(array(
+  'vid',
+  'nid',
+  'field_multivalue_value',
+  'delta',
+))
+    ->values(array(
+  'vid' => '4',
+  'nid' => '3',
+  'field_multivalue_value' => '33.00',
+  'delta' => '0',
+))->values(array(
+  'vid' => '4',
+  'nid' => '3',
+  'field_multivalue_value' => '44.00',
+  'delta' => '1',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ContentFieldTest.php b/core/modules/migrate_drupal/src/Tests/Table/ContentFieldTest.php
new file mode 100644
index 0000000..4e9ea3b
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ContentFieldTest.php
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ContentFieldTest.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the content_field_test table.
+ */
+class ContentFieldTest extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("content_field_test", array(
+  'fields' => array(
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'field_test_value' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'field_test_format' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("content_field_test")->fields(array(
+  'vid',
+  'nid',
+  'field_test_value',
+  'field_test_format',
+))
+    ->values(array(
+  'vid' => '1',
+  'nid' => '1',
+  'field_test_value' => 'This is a shared text field',
+  'field_test_format' => '1',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ContentFieldTestExcludeUnset.php b/core/modules/migrate_drupal/src/Tests/Table/ContentFieldTestExcludeUnset.php
new file mode 100644
index 0000000..fce8ae8
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ContentFieldTestExcludeUnset.php
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ContentFieldTestExcludeUnset.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the content_field_test_exclude_unset table.
+ */
+class ContentFieldTestExcludeUnset extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("content_field_test_exclude_unset", array(
+  'fields' => array(
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'field_test_exclude_unset_value' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'field_test_exclude_unset_format' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("content_field_test_exclude_unset")->fields(array(
+  'vid',
+  'nid',
+  'field_test_exclude_unset_value',
+  'field_test_exclude_unset_format',
+))
+    ->values(array(
+  'vid' => '1',
+  'nid' => '1',
+  'field_test_exclude_unset_value' => 'This is a field with exclude unset.',
+  'field_test_exclude_unset_format' => '1',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ContentFieldTestTwo.php b/core/modules/migrate_drupal/src/Tests/Table/ContentFieldTestTwo.php
new file mode 100644
index 0000000..5fe0898
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ContentFieldTestTwo.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ContentFieldTestTwo.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the content_field_test_two table.
+ */
+class ContentFieldTestTwo extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("content_field_test_two", array(
+  'fields' => array(
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'field_test_two_value' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'field_test_two_format' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("content_field_test_two")->fields(array(
+  'vid',
+  'nid',
+  'field_test_two_value',
+  'delta',
+  'field_test_two_format',
+))
+    ->values(array(
+  'vid' => '1',
+  'nid' => '1',
+  'field_test_two_value' => '10',
+  'delta' => '0',
+  'field_test_two_format' => '1',
+))->values(array(
+  'vid' => '1',
+  'nid' => '1',
+  'field_test_two_value' => '20',
+  'delta' => '1',
+  'field_test_two_format' => '1',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ContentNodeField.php b/core/modules/migrate_drupal/src/Tests/Table/ContentNodeField.php
new file mode 100644
index 0000000..48b163b
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ContentNodeField.php
@@ -0,0 +1,316 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ContentNodeField.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the content_node_field table.
+ */
+class ContentNodeField extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("content_node_field", array(
+  'fields' => array(
+    'field_name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '127',
+      'default' => '',
+    ),
+    'global_settings' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'required' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'multiple' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'db_storage' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '1',
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '127',
+      'default' => '',
+    ),
+    'db_columns' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'active' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'locked' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("content_node_field")->fields(array(
+  'field_name',
+  'type',
+  'global_settings',
+  'required',
+  'multiple',
+  'db_storage',
+  'module',
+  'db_columns',
+  'active',
+  'locked',
+))
+    ->values(array(
+  'field_name' => 'field_multivalue',
+  'type' => 'number_decimal',
+  'global_settings' => 'a:9:{s:6:"prefix";s:0:"";s:6:"suffix";s:0:"";s:3:"min";s:0:"";s:3:"max";s:0:"";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";s:9:"precision";s:2:"10";s:5:"scale";s:1:"2";s:7:"decimal";s:1:".";}',
+  'required' => '0',
+  'multiple' => '1',
+  'db_storage' => '0',
+  'module' => 'number',
+  'db_columns' => 'a:1:{s:5:"value";a:5:{s:4:"type";s:7:"numeric";s:9:"precision";s:2:"10";s:5:"scale";s:1:"2";s:8:"not null";b:0;s:8:"sortable";b:1;}}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test',
+  'type' => 'text',
+  'global_settings' => 'a:4:{s:15:"text_processing";s:1:"1";s:10:"max_length";s:0:"";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '0',
+  'module' => 'text',
+  'db_columns' => 'a:2:{s:5:"value";a:5:{s:4:"type";s:4:"text";s:4:"size";s:3:"big";s:8:"not null";b:0;s:8:"sortable";b:1;s:5:"views";b:1;}s:6:"format";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:1;s:7:"default";i:0;}}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_date',
+  'type' => 'date',
+  'global_settings' => 'a:0:{}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'date',
+  'db_columns' => 'a:0:{}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_datestamp',
+  'type' => 'datestamp',
+  'global_settings' => 'a:0:{}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'date',
+  'db_columns' => 'a:0:{}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_datetime',
+  'type' => 'datetime',
+  'global_settings' => 'a:0:{}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'date',
+  'db_columns' => 'a:0:{}',
+  'active' => '0',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_decimal_radio_buttons',
+  'type' => 'number_decimal',
+  'global_settings' => "a:9:{s:6:\"prefix\";s:0:\"\";s:6:\"suffix\";s:0:\"\";s:3:\"min\";s:0:\"\";s:3:\"max\";s:0:\"\";s:14:\"allowed_values\";s:7:\"1.2\n2.1\";s:18:\"allowed_values_php\";s:0:\"\";s:9:\"precision\";s:2:\"10\";s:5:\"scale\";s:1:\"2\";s:7:\"decimal\";s:1:\".\";}",
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'number',
+  'db_columns' => 'a:0:{}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_email',
+  'type' => 'email',
+  'global_settings' => 'a:0:{}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'email',
+  'db_columns' => 'a:0:{}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_exclude_unset',
+  'type' => 'text',
+  'global_settings' => 'a:4:{s:15:"text_processing";s:1:"1";s:10:"max_length";s:0:"";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '0',
+  'module' => 'text',
+  'db_columns' => 'a:2:{s:5:"value";a:5:{s:4:"type";s:4:"text";s:4:"size";s:3:"big";s:8:"not null";b:0;s:8:"sortable";b:1;s:5:"views";b:1;}s:6:"format";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:1;s:7:"default";i:0;}}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_filefield',
+  'type' => 'filefield',
+  'global_settings' => 'a:3:{s:10:"list_field";s:1:"0";s:12:"list_default";i:1;s:17:"description_field";s:1:"1";}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'filefield',
+  'db_columns' => 'a:0:{}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_float_single_checkbox',
+  'type' => 'number_float',
+  'global_settings' => "a:6:{s:6:\"prefix\";s:0:\"\";s:6:\"suffix\";s:0:\"\";s:3:\"min\";s:0:\"\";s:3:\"max\";s:0:\"\";s:14:\"allowed_values\";s:11:\"3.142\n1.234\";s:18:\"allowed_values_php\";s:0:\"\";}",
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'number',
+  'db_columns' => 'a:0:{}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_four',
+  'type' => 'number_float',
+  'global_settings' => 'a:6:{s:6:"prefix";s:3:"id-";s:6:"suffix";s:0:"";s:3:"min";s:3:"100";s:3:"max";s:3:"200";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'number',
+  'db_columns' => '',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_identical1',
+  'type' => 'number_integer',
+  'global_settings' => '',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'number',
+  'db_columns' => 'a:1:{s:5:"value";a:3:{s:4:"type";s:3:"int";s:8:"not null";b:0;s:8:"sortable";b:1;}}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_identical2',
+  'type' => 'number_integer',
+  'global_settings' => '',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'number',
+  'db_columns' => 'a:1:{s:5:"value";a:3:{s:4:"type";s:3:"int";s:8:"not null";b:0;s:8:"sortable";b:1;}}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_imagefield',
+  'type' => 'filefield',
+  'global_settings' => 'a:3:{s:10:"list_field";s:1:"0";s:12:"list_default";i:1;s:17:"description_field";s:1:"0";}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'filefield',
+  'db_columns' => 'a:0:{}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_integer_selectlist',
+  'type' => 'number_integer',
+  'global_settings' => "a:6:{s:6:\"prefix\";s:0:\"\";s:6:\"suffix\";s:0:\"\";s:3:\"min\";s:0:\"\";s:3:\"max\";s:0:\"\";s:14:\"allowed_values\";s:19:\"1234\n2341\n3412\n4123\";s:18:\"allowed_values_php\";s:0:\"\";}",
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'number',
+  'db_columns' => 'a:1:{s:5:"value";a:3:{s:4:"type";s:3:"int";s:8:"not null";b:0;s:8:"sortable";b:1;}}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_link',
+  'type' => 'link',
+  'global_settings' => 'a:7:{s:10:"attributes";a:4:{s:6:"target";s:7:"default";s:3:"rel";s:8:"nofollow";s:5:"class";s:0:"";s:5:"title";s:10:"Link Title";}s:7:"display";a:1:{s:10:"url_cutoff";s:2:"80";}s:3:"url";i:0;s:5:"title";s:8:"required";s:11:"title_value";s:0:"";s:13:"enable_tokens";s:0:"";s:12:"validate_url";i:1;}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'link',
+  'db_columns' => 'a:3:{s:3:"url";a:4:{s:4:"type";s:7:"varchar";s:6:"length";i:2048;s:8:"not null";b:0;s:8:"sortable";b:1;}s:5:"title";a:4:{s:4:"type";s:7:"varchar";s:6:"length";i:255;s:8:"not null";b:0;s:8:"sortable";b:1;}s:10:"attributes";a:3:{s:4:"type";s:4:"text";s:4:"size";s:6:"medium";s:8:"not null";b:0;}}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_phone',
+  'type' => 'au_phone',
+  'global_settings' => 'a:1:{s:5:"value";a:3:{s:4:"type";s:7:"varchar";s:6:"length";i:255;s:8:"not null";b:0;}}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'phone',
+  'db_columns' => 'a:0:{}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_text_single_checkbox',
+  'type' => 'text',
+  'global_settings' => "a:4:{s:15:\"text_processing\";s:1:\"0\";s:10:\"max_length\";s:0:\"\";s:14:\"allowed_values\";s:13:\"Hello\nGoodbye\";s:18:\"allowed_values_php\";s:0:\"\";}",
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'text',
+  'db_columns' => 'a:0:{}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_three',
+  'type' => 'number_decimal',
+  'global_settings' => '',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'number',
+  'db_columns' => 'a:1:{s:5:"value";a:6:{s:4:"type";s:7:"numeric";s:9:"precision";i:10;s:5:"scale";i:2;s:8:"not null";b:0;s:8:"sortable";b:1;s:5:"views";b:1;}}',
+  'active' => '1',
+  'locked' => '0',
+))->values(array(
+  'field_name' => 'field_test_two',
+  'type' => 'number_integer',
+  'global_settings' => 'a:6:{s:6:"prefix";s:4:"pref";s:6:"suffix";s:3:"suf";s:3:"min";i:10;s:3:"max";i:100;s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}',
+  'required' => '0',
+  'multiple' => '1',
+  'db_storage' => '0',
+  'module' => 'number',
+  'db_columns' => 'a:2:{s:5:"value";a:5:{s:4:"type";s:4:"text";s:4:"size";s:3:"big";s:8:"not null";b:0;s:8:"sortable";b:1;s:5:"views";b:1;}s:6:"format";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:0;s:5:"views";b:0;}}',
+  'active' => '1',
+  'locked' => '0',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ContentNodeFieldInstance.php b/core/modules/migrate_drupal/src/Tests/Table/ContentNodeFieldInstance.php
new file mode 100644
index 0000000..3ad4aaa
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ContentNodeFieldInstance.php
@@ -0,0 +1,326 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ContentNodeFieldInstance.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the content_node_field_instance table.
+ */
+class ContentNodeFieldInstance extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("content_node_field_instance", array(
+  'fields' => array(
+    'field_name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'type_name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'label' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'widget_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'widget_settings' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'display_settings' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'description' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'widget_module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '127',
+      'default' => '',
+    ),
+    'widget_active' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("content_node_field_instance")->fields(array(
+  'field_name',
+  'type_name',
+  'weight',
+  'label',
+  'widget_type',
+  'widget_settings',
+  'display_settings',
+  'description',
+  'widget_module',
+  'widget_active',
+))
+    ->values(array(
+  'field_name' => 'field_multivalue',
+  'type_name' => 'test_planet',
+  'weight' => '2',
+  'label' => 'Decimal Field',
+  'widget_type' => 'number',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:48:"default_value_widget][field_multivalue][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:6:{s:6:"weight";i:2;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+  'description' => 'An example multi-valued decimal field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test',
+  'type_name' => 'story',
+  'weight' => '1',
+  'label' => 'Text Field',
+  'widget_type' => 'text_textfield',
+  'widget_settings' => 'a:4:{s:4:"rows";i:5;s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:22:"text for default value";s:14:"_error_element";s:42:"default_value_widget][field_test][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:8:{s:6:"weight";i:1;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}i:1;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:6:"teaser";a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example text field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test',
+  'type_name' => 'test_page',
+  'weight' => '1',
+  'label' => 'Text Field',
+  'widget_type' => 'text_textfield',
+  'widget_settings' => 'a:4:{s:4:"rows";i:5;s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:22:"text for default value";s:14:"_error_element";s:42:"default_value_widget][field_test][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:1;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example textfield.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_date',
+  'type_name' => 'story',
+  'weight' => '10',
+  'label' => 'Date Field',
+  'widget_type' => 'date_select',
+  'widget_settings' => 'a:10:{s:13:"default_value";s:5:"blank";s:18:"default_value_code";s:0:"";s:14:"default_value2";s:4:"same";s:19:"default_value_code2";s:0:"";s:12:"input_format";s:13:"m/d/Y - H:i:s";s:19:"input_format_custom";s:0:"";s:9:"increment";s:1:"1";s:10:"text_parts";a:0:{}s:10:"year_range";s:5:"-3:+3";s:14:"label_position";s:5:"above";}',
+  'display_settings' => 'a:7:{s:6:"weight";i:10;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"long";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example date field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_datestamp',
+  'type_name' => 'story',
+  'weight' => '11',
+  'label' => 'Date Stamp Field',
+  'widget_type' => 'date_select',
+  'widget_settings' => 'a:10:{s:13:"default_value";s:5:"blank";s:18:"default_value_code";s:0:"";s:14:"default_value2";s:4:"same";s:19:"default_value_code2";s:0:"";s:12:"input_format";s:13:"m/d/Y - H:i:s";s:19:"input_format_custom";s:0:"";s:9:"increment";s:1:"1";s:10:"text_parts";a:0:{}s:10:"year_range";s:5:"-3:+3";s:14:"label_position";s:5:"above";}',
+  'display_settings' => 'a:7:{s:6:"weight";i:11;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:6:"medium";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example date stamp field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_datetime',
+  'type_name' => 'story',
+  'weight' => '12',
+  'label' => 'Datetime Field',
+  'widget_type' => 'date_select',
+  'widget_settings' => 'a:10:{s:13:"default_value";s:5:"blank";s:18:"default_value_code";s:0:"";s:14:"default_value2";s:4:"same";s:19:"default_value_code2";s:0:"";s:12:"input_format";s:13:"m/d/Y - H:i:s";s:19:"input_format_custom";s:0:"";s:9:"increment";s:1:"1";s:10:"text_parts";a:0:{}s:10:"year_range";s:5:"-3:+3";s:14:"label_position";s:5:"above";}',
+  'display_settings' => 'a:7:{s:6:"weight";i:12;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:5:"short";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example datetime field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_decimal_radio_buttons',
+  'type_name' => 'story',
+  'weight' => '13',
+  'label' => 'Decimal Radio Buttons Field',
+  'widget_type' => 'optionwidgets_buttons',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:1:{s:5:"value";s:0:"";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:13;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_0";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example decimal field using radio buttons.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_email',
+  'type_name' => 'story',
+  'weight' => '4',
+  'label' => 'Email Field',
+  'widget_type' => 'email_textfield',
+  'widget_settings' => 'a:3:{s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:1:{s:5:"email";s:17:"benjy@example.com";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:4;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example email field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_exclude_unset',
+  'type_name' => 'story',
+  'weight' => '1',
+  'label' => 'Text Field',
+  'widget_type' => 'text_textfield',
+  'widget_settings' => 'a:4:{s:4:"rows";i:5;s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:22:"text for default value";s:14:"_error_element";s:42:"default_value_widget][field_test][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:8:{s:6:"weight";i:1;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}i:1;a:1:{s:6:"format";s:7:"default";}s:6:"teaser";a:1:{s:6:"format";s:7:"trimmed";}s:4:"full";a:1:{s:6:"format";s:7:"default";}i:4;a:1:{s:6:"format";s:7:"trimmed";}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example text field without exclude.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_filefield',
+  'type_name' => 'story',
+  'weight' => '7',
+  'label' => 'File Field',
+  'widget_type' => 'filefield_widget',
+  'widget_settings' => 'a:5:{s:15:"file_extensions";s:11:"txt pdf doc";s:9:"file_path";s:6:"images";s:18:"progress_indicator";s:3:"bar";s:21:"max_filesize_per_file";s:4:"200K";s:21:"max_filesize_per_node";s:3:"20M";}',
+  'display_settings' => 'a:7:{s:6:"weight";i:7;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:9:"url_plain";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example image field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_float_single_checkbox',
+  'type_name' => 'story',
+  'weight' => '14',
+  'label' => 'Float Single Checkbox Field',
+  'widget_type' => 'optionwidgets_onoff',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:1:{s:5:"value";N;}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:14;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_0";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example float field using a single on/off checkbox.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_four',
+  'type_name' => 'story',
+  'weight' => '3',
+  'label' => 'Float Field',
+  'widget_type' => 'number',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:3:"101";s:14:"_error_element";s:43:"default_value_widget][field_float][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:3;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_2";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example float field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_identical1',
+  'type_name' => 'story',
+  'weight' => '2',
+  'label' => 'Integer Field',
+  'widget_type' => 'number',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:41:"default_value_widget][field_int][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:2;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_3";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example integer field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_identical2',
+  'type_name' => 'story',
+  'weight' => '2',
+  'label' => 'Integer Field',
+  'widget_type' => 'number',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:41:"default_value_widget][field_int][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:2;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_3";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example integer field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_imagefield',
+  'type_name' => 'story',
+  'weight' => '8',
+  'label' => 'Image Field',
+  'widget_type' => 'imagefield_widget',
+  'widget_settings' => 'a:14:{s:15:"file_extensions";s:16:"png gif jpg jpeg";s:9:"file_path";s:0:"";s:18:"progress_indicator";s:3:"bar";s:21:"max_filesize_per_file";s:0:"";s:21:"max_filesize_per_node";s:0:"";s:14:"max_resolution";s:1:"0";s:14:"min_resolution";s:1:"0";s:3:"alt";s:8:"Test alt";s:10:"custom_alt";i:0;s:5:"title";s:10:"Test title";s:12:"custom_title";i:0;s:10:"title_type";s:9:"textfield";s:13:"default_image";N;s:17:"use_default_image";i:0;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:8;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:15:"image_imagelink";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:11:"image_plain";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example image field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_integer_selectlist',
+  'type_name' => 'story',
+  'weight' => '15',
+  'label' => 'Integer Select List Field',
+  'widget_type' => 'optionwidgets_select',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:1:{s:5:"value";s:0:"";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:15;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_3";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example integer field using a select list.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_link',
+  'type_name' => 'story',
+  'weight' => '5',
+  'label' => 'Link Field',
+  'widget_type' => 'link',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"title";s:18:"default link title";s:3:"url";s:17:"http://drupal.org";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:5;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:8:"absolute";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example link field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_phone',
+  'type_name' => 'story',
+  'weight' => '9',
+  'label' => 'Phone Field',
+  'widget_type' => 'phone_textfield',
+  'widget_settings' => 'a:3:{s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:43:"default_value_widget][field_phone][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:9;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example phone field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_text_single_checkbox',
+  'type_name' => 'story',
+  'weight' => '16',
+  'label' => 'Text Single Checkbox Field',
+  'widget_type' => 'optionwidgets_onoff',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:1:{s:5:"value";N;}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:16;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example text field using a single on/off checkbox.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_three',
+  'type_name' => 'story',
+  'weight' => '3',
+  'label' => 'Decimal Field',
+  'widget_type' => 'number',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:3:"101";s:14:"_error_element";s:45:"default_value_widget][field_decimal][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:3;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_2";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example decimal field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))->values(array(
+  'field_name' => 'field_test_two',
+  'type_name' => 'story',
+  'weight' => '2',
+  'label' => 'Integer Field',
+  'widget_type' => 'number',
+  'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:41:"default_value_widget][field_int][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:7:{s:6:"weight";i:2;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_3";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}}',
+  'description' => 'An example integer field.',
+  'widget_module' => '',
+  'widget_active' => '0',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ContentTypeStory.php b/core/modules/migrate_drupal/src/Tests/Table/ContentTypeStory.php
new file mode 100644
index 0000000..5e6017c
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ContentTypeStory.php
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ContentTypeStory.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the content_type_story table.
+ */
+class ContentTypeStory extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("content_type_story", array(
+  'fields' => array(
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'field_test_three_value' => array(
+      'type' => 'numeric',
+      'not null' => FALSE,
+      'precision' => '10',
+      'scale' => '2',
+    ),
+    'field_test_integer_selectlist_value' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'length' => '11',
+    ),
+    'field_test_identical1_value' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'field_test_identical2_value' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'field_test_link_url' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '2048',
+    ),
+    'field_test_link_title' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+    'field_test_link_attributes' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+  ),
+));
+    $this->database->insert("content_type_story")->fields(array(
+  'nid',
+  'vid',
+  'uid',
+  'field_test_three_value',
+  'field_test_integer_selectlist_value',
+  'field_test_identical1_value',
+  'field_test_identical2_value',
+  'field_test_link_url',
+  'field_test_link_title',
+  'field_test_link_attributes',
+))
+    ->values(array(
+  'nid' => '1',
+  'vid' => '1',
+  'uid' => '1',
+  'field_test_three_value' => '42.42',
+  'field_test_integer_selectlist_value' => '3412',
+  'field_test_identical1_value' => '1',
+  'field_test_identical2_value' => '1',
+  'field_test_link_url' => 'http://drupal.org/project/drupal',
+  'field_test_link_title' => 'Drupal project page',
+  'field_test_link_attributes' => 's:32:"a:1:{s:6:"target";s:6:"_blank";}";";',
+))->values(array(
+  'nid' => '1',
+  'vid' => '2',
+  'uid' => '1',
+  'field_test_three_value' => '42.42',
+  'field_test_integer_selectlist_value' => '3412',
+  'field_test_identical1_value' => '1',
+  'field_test_identical2_value' => '1',
+  'field_test_link_url' => 'http://drupal.org/project/drupal',
+  'field_test_link_title' => 'Drupal project page',
+  'field_test_link_attributes' => 's:32:"a:1:{s:6:"target";s:6:"_blank";}";',
+))->values(array(
+  'nid' => '2',
+  'vid' => '3',
+  'uid' => '1',
+  'field_test_three_value' => '23.20',
+  'field_test_integer_selectlist_value' => '1244',
+  'field_test_identical1_value' => '1',
+  'field_test_identical2_value' => '1',
+  'field_test_link_url' => 'http://groups.drupal.org/',
+  'field_test_link_title' => 'Drupal Groups',
+  'field_test_link_attributes' => 's:6:"a:0:{}";',
+))->values(array(
+  'nid' => '2',
+  'vid' => '5',
+  'uid' => '1',
+  'field_test_three_value' => '23.20',
+  'field_test_integer_selectlist_value' => '1244',
+  'field_test_identical1_value' => '1',
+  'field_test_identical2_value' => '1',
+  'field_test_link_url' => 'http://groups.drupal.org/',
+  'field_test_link_title' => 'Drupal Groups',
+  'field_test_link_attributes' => 's:6:"a:0:{}";',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ContentTypeTestPlanet.php b/core/modules/migrate_drupal/src/Tests/Table/ContentTypeTestPlanet.php
new file mode 100644
index 0000000..4e5ba26
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ContentTypeTestPlanet.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ContentTypeTestPlanet.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the content_type_test_planet table.
+ */
+class ContentTypeTestPlanet extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("content_type_test_planet", array(
+  'fields' => array(
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("content_type_test_planet")->fields(array(
+  'nid',
+  'vid',
+))
+    ->values(array(
+  'nid' => '3',
+  'vid' => '4',
+))->values(array(
+  'nid' => '4',
+  'vid' => '6',
+))->values(array(
+  'nid' => '5',
+  'vid' => '7',
+))->values(array(
+  'nid' => '6',
+  'vid' => '8',
+))->values(array(
+  'nid' => '7',
+  'vid' => '9',
+))->values(array(
+  'nid' => '8',
+  'vid' => '10',
+))->values(array(
+  'nid' => '9',
+  'vid' => '11',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/EventTimezones.php b/core/modules/migrate_drupal/src/Tests/Table/EventTimezones.php
new file mode 100644
index 0000000..a7f8e13
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/EventTimezones.php
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\EventTimezones.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the event_timezones table.
+ */
+class EventTimezones extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("event_timezones", array(
+  'fields' => array(
+    'timezone' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+  ),
+));
+    $this->database->insert("event_timezones")->fields(array(
+  'timezone',
+  'name',
+))
+    ->values(array(
+  'timezone' => '1',
+  'name' => 'Europe/Berlin',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Files.php b/core/modules/migrate_drupal/src/Tests/Table/Files.php
new file mode 100644
index 0000000..1941491
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Files.php
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Files.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the files table.
+ */
+class Files extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("files", array(
+  'fields' => array(
+    'fid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'filename' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'filepath' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'filemime' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'filesize' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'timestamp' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("files")->fields(array(
+  'fid',
+  'uid',
+  'filename',
+  'filepath',
+  'filemime',
+  'filesize',
+  'status',
+  'timestamp',
+))
+    ->values(array(
+  'fid' => '1',
+  'uid' => '1',
+  'filename' => 'Image1.png',
+  'filepath' => 'core/modules/simpletest/files/image-1.png',
+  'filemime' => 'image/png',
+  'filesize' => '39325',
+  'status' => '1',
+  'timestamp' => '1388880660',
+))->values(array(
+  'fid' => '2',
+  'uid' => '1',
+  'filename' => 'Image2.jpg',
+  'filepath' => 'core/modules/simpletest/files/image-2.jpg',
+  'filemime' => 'image/jpeg',
+  'filesize' => '1831',
+  'status' => '1',
+  'timestamp' => '1388880664',
+))->values(array(
+  'fid' => '3',
+  'uid' => '1',
+  'filename' => 'Image-test.gif',
+  'filepath' => 'core/modules/simpletest/files/image-test.gif',
+  'filemime' => 'image/jpeg',
+  'filesize' => '183',
+  'status' => '1',
+  'timestamp' => '1388880668',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/FilterFormats.php b/core/modules/migrate_drupal/src/Tests/Table/FilterFormats.php
new file mode 100644
index 0000000..6f3f669
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/FilterFormats.php
@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\FilterFormats.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the filter_formats table.
+ */
+class FilterFormats extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("filter_formats", array(
+  'fields' => array(
+    'format' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'roles' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'cache' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("filter_formats")->fields(array(
+  'format',
+  'name',
+  'roles',
+  'cache',
+))
+    ->values(array(
+  'format' => '1',
+  'name' => 'Filtered HTML',
+  'roles' => ',1,2,',
+  'cache' => '1',
+))->values(array(
+  'format' => '2',
+  'name' => 'Full HTML',
+  'roles' => '3',
+  'cache' => '1',
+))->values(array(
+  'format' => '3',
+  'name' => 'Escape HTML Filter',
+  'roles' => '',
+  'cache' => '1',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Filters.php b/core/modules/migrate_drupal/src/Tests/Table/Filters.php
new file mode 100644
index 0000000..3c54d2f
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Filters.php
@@ -0,0 +1,104 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Filters.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the filters table.
+ */
+class Filters extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("filters", array(
+  'fields' => array(
+    'fid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+    ),
+    'format' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '64',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("filters")->fields(array(
+  'fid',
+  'format',
+  'module',
+  'delta',
+  'weight',
+))
+    ->values(array(
+  'fid' => '1',
+  'format' => '1',
+  'module' => 'filter',
+  'delta' => '2',
+  'weight' => '0',
+))->values(array(
+  'fid' => '2',
+  'format' => '1',
+  'module' => 'filter',
+  'delta' => '0',
+  'weight' => '1',
+))->values(array(
+  'fid' => '3',
+  'format' => '1',
+  'module' => 'filter',
+  'delta' => '1',
+  'weight' => '2',
+))->values(array(
+  'fid' => '4',
+  'format' => '1',
+  'module' => 'filter',
+  'delta' => '3',
+  'weight' => '10',
+))->values(array(
+  'fid' => '5',
+  'format' => '2',
+  'module' => 'filter',
+  'delta' => '2',
+  'weight' => '0',
+))->values(array(
+  'fid' => '6',
+  'format' => '2',
+  'module' => 'filter',
+  'delta' => '1',
+  'weight' => '1',
+))->values(array(
+  'fid' => '7',
+  'format' => '2',
+  'module' => 'filter',
+  'delta' => '3',
+  'weight' => '10',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/MenuCustom.php b/core/modules/migrate_drupal/src/Tests/Table/MenuCustom.php
new file mode 100644
index 0000000..ad232cb
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/MenuCustom.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\MenuCustom.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the menu_custom table.
+ */
+class MenuCustom extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("menu_custom", array(
+  'fields' => array(
+    'menu_name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'description' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+  ),
+));
+    $this->database->insert("menu_custom")->fields(array(
+  'menu_name',
+  'title',
+  'description',
+))
+    ->values(array(
+  'menu_name' => 'navigation',
+  'title' => 'Navigation',
+  'description' => 'The navigation menu is provided by Drupal and is the main interactive menu for any site. It is usually the only menu that contains personalized links for authenticated users, and is often not even visible to anonymous users.',
+))->values(array(
+  'menu_name' => 'primary-links',
+  'title' => 'Primary links',
+  'description' => 'Primary links are often used at the theme layer to show the major sections of a site. A typical representation for primary links would be tabs along the top.',
+))->values(array(
+  'menu_name' => 'secondary-links',
+  'title' => 'Secondary links',
+  'description' => 'Secondary links are often used for pages like legal notices, contact details, and other secondary navigation items that play a lesser role than primary links',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/MenuLinks.php b/core/modules/migrate_drupal/src/Tests/Table/MenuLinks.php
new file mode 100644
index 0000000..96b09a5
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/MenuLinks.php
@@ -0,0 +1,420 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\MenuLinks.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the menu_links table.
+ */
+class MenuLinks extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("menu_links", array(
+  'fields' => array(
+    'menu_name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'mlid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'plid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'link_path' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'router_path' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'link_title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'options' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => 'system',
+    ),
+    'hidden' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+    'external' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+    'has_children' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+    'expanded' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'depth' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+    'customized' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+    'p1' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p2' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p3' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p4' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p5' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p6' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p7' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p8' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p9' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'updated' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("menu_links")->fields(array(
+  'menu_name',
+  'mlid',
+  'plid',
+  'link_path',
+  'router_path',
+  'link_title',
+  'options',
+  'module',
+  'hidden',
+  'external',
+  'has_children',
+  'expanded',
+  'weight',
+  'depth',
+  'customized',
+  'p1',
+  'p2',
+  'p3',
+  'p4',
+  'p5',
+  'p6',
+  'p7',
+  'p8',
+  'p9',
+  'updated',
+))
+    ->values(array(
+  'menu_name' => 'book-toc-1',
+  'mlid' => '1',
+  'plid' => '0',
+  'link_path' => 'node/4',
+  'router_path' => 'node/%',
+  'link_title' => 'Test top book title',
+  'options' => 'a:0:{}',
+  'module' => 'book',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '-10',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+))->values(array(
+  'menu_name' => 'book-toc-1',
+  'mlid' => '2',
+  'plid' => '1',
+  'link_path' => 'node/5',
+  'router_path' => 'node/%',
+  'link_title' => 'Test book title child 1',
+  'options' => 'a:0:{}',
+  'module' => 'book',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '2',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+))->values(array(
+  'menu_name' => 'book-toc-1',
+  'mlid' => '3',
+  'plid' => '2',
+  'link_path' => 'node/6',
+  'router_path' => 'node/%',
+  'link_title' => 'Test book title child 1.1',
+  'options' => 'a:0:{}',
+  'module' => 'book',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '2',
+  'p3' => '3',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+))->values(array(
+  'menu_name' => 'book-toc-1',
+  'mlid' => '4',
+  'plid' => '2',
+  'link_path' => 'node/7',
+  'router_path' => 'node/%',
+  'link_title' => 'Test book title child 1.2',
+  'options' => 'a:0:{}',
+  'module' => 'book',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '2',
+  'p3' => '4',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+))->values(array(
+  'menu_name' => 'book-toc-2',
+  'mlid' => '5',
+  'plid' => '0',
+  'link_path' => 'node/8',
+  'router_path' => 'node/%',
+  'link_title' => 'Test top book 2 title',
+  'options' => 'a:0:{}',
+  'module' => 'book',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '-10',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '5',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+))->values(array(
+  'menu_name' => 'secondary-links',
+  'mlid' => '138',
+  'plid' => '0',
+  'link_path' => 'user/login',
+  'router_path' => 'user/login',
+  'link_title' => 'Test 1',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:16:"Test menu link 1";}}',
+  'module' => 'menu',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '15',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '138',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+))->values(array(
+  'menu_name' => 'secondary-links',
+  'mlid' => '139',
+  'plid' => '138',
+  'link_path' => 'admin',
+  'router_path' => 'admin',
+  'link_title' => 'Test 2',
+  'options' => 'a:2:{s:5:"query";s:7:"foo=bar";s:10:"attributes";a:1:{s:5:"title";s:16:"Test menu link 2";}}',
+  'module' => 'menu',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '1',
+  'weight' => '12',
+  'depth' => '2',
+  'customized' => '1',
+  'p1' => '138',
+  'p2' => '139',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+))->values(array(
+  'menu_name' => 'secondary-links',
+  'mlid' => '140',
+  'plid' => '0',
+  'link_path' => 'http://drupal.org',
+  'router_path' => '',
+  'link_title' => 'Drupal.org',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
+  'module' => 'menu',
+  'hidden' => '0',
+  'external' => '1',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '0',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Node.php b/core/modules/migrate_drupal/src/Tests/Table/Node.php
new file mode 100644
index 0000000..89d1343
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Node.php
@@ -0,0 +1,263 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Node.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the node table.
+ */
+class Node extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("node", array(
+  'fields' => array(
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '12',
+      'default' => '',
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '1',
+    ),
+    'created' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'changed' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'comment' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'promote' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'moderate' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'sticky' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'tnid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'translate' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("node")->fields(array(
+  'nid',
+  'vid',
+  'type',
+  'language',
+  'title',
+  'uid',
+  'status',
+  'created',
+  'changed',
+  'comment',
+  'promote',
+  'moderate',
+  'sticky',
+  'tnid',
+  'translate',
+))
+    ->values(array(
+  'nid' => '1',
+  'vid' => '1',
+  'type' => 'story',
+  'language' => '',
+  'title' => 'Test title',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1388271197',
+  'changed' => '1390095701',
+  'comment' => '0',
+  'promote' => '0',
+  'moderate' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))->values(array(
+  'nid' => '2',
+  'vid' => '3',
+  'type' => 'story',
+  'language' => '',
+  'title' => 'Test title 2',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1388271197',
+  'changed' => '1390095701',
+  'comment' => '0',
+  'promote' => '0',
+  'moderate' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))->values(array(
+  'nid' => '3',
+  'vid' => '4',
+  'type' => 'test_planet',
+  'language' => '',
+  'title' => 'Test planet title 3',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1388271527',
+  'changed' => '1390096401',
+  'comment' => '0',
+  'promote' => '0',
+  'moderate' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))->values(array(
+  'nid' => '4',
+  'vid' => '6',
+  'type' => 'test_planet',
+  'language' => '',
+  'title' => '',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1388271527',
+  'changed' => '1390096401',
+  'comment' => '0',
+  'promote' => '0',
+  'moderate' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))->values(array(
+  'nid' => '5',
+  'vid' => '7',
+  'type' => 'test_planet',
+  'language' => '',
+  'title' => '',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1388271527',
+  'changed' => '1390096401',
+  'comment' => '0',
+  'promote' => '0',
+  'moderate' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))->values(array(
+  'nid' => '6',
+  'vid' => '8',
+  'type' => 'test_planet',
+  'language' => '',
+  'title' => '',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1388271527',
+  'changed' => '1390096401',
+  'comment' => '0',
+  'promote' => '0',
+  'moderate' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))->values(array(
+  'nid' => '7',
+  'vid' => '9',
+  'type' => 'test_planet',
+  'language' => '',
+  'title' => '',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1388271527',
+  'changed' => '1390096401',
+  'comment' => '0',
+  'promote' => '0',
+  'moderate' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))->values(array(
+  'nid' => '8',
+  'vid' => '10',
+  'type' => 'test_planet',
+  'language' => '',
+  'title' => '',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1388271527',
+  'changed' => '1390096401',
+  'comment' => '0',
+  'promote' => '0',
+  'moderate' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/NodeRevisions.php b/core/modules/migrate_drupal/src/Tests/Table/NodeRevisions.php
new file mode 100644
index 0000000..e611c10
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/NodeRevisions.php
@@ -0,0 +1,199 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\NodeRevisions.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the node_revisions table.
+ */
+class NodeRevisions extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("node_revisions", array(
+  'fields' => array(
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'body' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'teaser' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'log' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'timestamp' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'format' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("node_revisions")->fields(array(
+  'nid',
+  'vid',
+  'uid',
+  'title',
+  'body',
+  'teaser',
+  'log',
+  'timestamp',
+  'format',
+))
+    ->values(array(
+  'nid' => '1',
+  'vid' => '1',
+  'uid' => '1',
+  'title' => 'Test title',
+  'body' => 'test',
+  'teaser' => 'test',
+  'log' => '',
+  'timestamp' => '1390095701',
+  'format' => '1',
+))->values(array(
+  'nid' => '1',
+  'vid' => '2',
+  'uid' => '2',
+  'title' => 'Test title rev 2',
+  'body' => 'body test rev 2',
+  'teaser' => 'teaser test rev 2',
+  'log' => 'modified rev 2',
+  'timestamp' => '1390095702',
+  'format' => '1',
+))->values(array(
+  'nid' => '2',
+  'vid' => '3',
+  'uid' => '1',
+  'title' => 'Test title rev 3',
+  'body' => 'test rev 3',
+  'teaser' => 'test rev 3',
+  'log' => '',
+  'timestamp' => '1390095701',
+  'format' => '1',
+))->values(array(
+  'nid' => '3',
+  'vid' => '4',
+  'uid' => '1',
+  'title' => 'Test page title rev 4',
+  'body' => 'test page body rev 4',
+  'teaser' => 'test page teaser rev 4',
+  'log' => '',
+  'timestamp' => '1390095701',
+  'format' => '0',
+))->values(array(
+  'nid' => '1',
+  'vid' => '5',
+  'uid' => '1',
+  'title' => 'Test title rev 3',
+  'body' => 'body test rev 3',
+  'teaser' => 'teaser test rev 3',
+  'log' => 'modified rev 3',
+  'timestamp' => '1390095703',
+  'format' => '1',
+))->values(array(
+  'nid' => '4',
+  'vid' => '6',
+  'uid' => '1',
+  'title' => 'Node 4',
+  'body' => 'Node 4 body',
+  'teaser' => 'test for node 4',
+  'log' => '',
+  'timestamp' => '1390095701',
+  'format' => '1',
+))->values(array(
+  'nid' => '5',
+  'vid' => '7',
+  'uid' => '1',
+  'title' => 'Node 5',
+  'body' => 'Node 5 body',
+  'teaser' => 'test for node 5',
+  'log' => '',
+  'timestamp' => '1390095701',
+  'format' => '1',
+))->values(array(
+  'nid' => '6',
+  'vid' => '8',
+  'uid' => '1',
+  'title' => 'Node 6',
+  'body' => 'Node 6 body',
+  'teaser' => 'test for node 6',
+  'log' => '',
+  'timestamp' => '1390095701',
+  'format' => '1',
+))->values(array(
+  'nid' => '7',
+  'vid' => '9',
+  'uid' => '1',
+  'title' => 'Node 7',
+  'body' => 'Node 7 body',
+  'teaser' => 'test for node 7',
+  'log' => '',
+  'timestamp' => '1390095701',
+  'format' => '1',
+))->values(array(
+  'nid' => '8',
+  'vid' => '10',
+  'uid' => '1',
+  'title' => 'Node 8',
+  'body' => 'Node 8 body',
+  'teaser' => 'test for node 8',
+  'log' => '',
+  'timestamp' => '1390095701',
+  'format' => '1',
+))->values(array(
+  'nid' => '9',
+  'vid' => '11',
+  'uid' => '1',
+  'title' => 'Node 9',
+  'body' => 'Node 9 body',
+  'teaser' => 'test for node 9',
+  'log' => '',
+  'timestamp' => '1390095701',
+  'format' => '1',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/NodeType.php b/core/modules/migrate_drupal/src/Tests/Table/NodeType.php
new file mode 100644
index 0000000..8b9ae48
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/NodeType.php
@@ -0,0 +1,272 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\NodeType.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the node_type table.
+ */
+class NodeType extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("node_type", array(
+  'fields' => array(
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+    ),
+    'description' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'help' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+    'has_title' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '3',
+      'unsigned' => TRUE,
+    ),
+    'title_label' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'has_body' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '3',
+      'unsigned' => TRUE,
+    ),
+    'body_label' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'min_word_count' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '5',
+      'unsigned' => TRUE,
+    ),
+    'custom' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'modified' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'locked' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'orig_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+  ),
+));
+    $this->database->insert("node_type")->fields(array(
+  'type',
+  'name',
+  'module',
+  'description',
+  'help',
+  'has_title',
+  'title_label',
+  'has_body',
+  'body_label',
+  'min_word_count',
+  'custom',
+  'modified',
+  'locked',
+  'orig_type',
+))
+    ->values(array(
+  'type' => 'article',
+  'name' => 'Article',
+  'module' => 'node',
+  'description' => 'An <em>article</em>, content type.',
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'has_body' => '1',
+  'body_label' => 'Body',
+  'min_word_count' => '0',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'orig_type' => 'story',
+))->values(array(
+  'type' => 'company',
+  'name' => 'Company',
+  'module' => 'node',
+  'description' => 'Company node type',
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Name',
+  'has_body' => '1',
+  'body_label' => 'Description',
+  'min_word_count' => '20',
+  'custom' => '0',
+  'modified' => '0',
+  'locked' => '0',
+  'orig_type' => 'company',
+))->values(array(
+  'type' => 'employee',
+  'name' => 'Employee',
+  'module' => 'node',
+  'description' => 'Employee node type',
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Name',
+  'has_body' => '1',
+  'body_label' => 'Bio',
+  'min_word_count' => '20',
+  'custom' => '0',
+  'modified' => '0',
+  'locked' => '0',
+  'orig_type' => 'employee',
+))->values(array(
+  'type' => 'page',
+  'name' => 'Page',
+  'module' => 'node',
+  'description' => "A <em>page</em>, similar in form to a <em>story</em>, is a simple method for creating and displaying information that rarely changes, such as an \"About us\" section of a website. By default, a <em>page</em> entry does not allow visitor comments and is not featured on the site's initial home page.",
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'has_body' => '1',
+  'body_label' => 'Body',
+  'min_word_count' => '0',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'orig_type' => 'page',
+))->values(array(
+  'type' => 'sponsor',
+  'name' => 'Sponsor',
+  'module' => 'node',
+  'description' => 'Sponsor node type',
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Name',
+  'has_body' => '0',
+  'body_label' => 'Body',
+  'min_word_count' => '0',
+  'custom' => '0',
+  'modified' => '0',
+  'locked' => '0',
+  'orig_type' => '',
+))->values(array(
+  'type' => 'story',
+  'name' => 'Story',
+  'module' => 'node',
+  'description' => "A <em>story</em>, similar in form to a <em>page</em>, is ideal for creating and displaying content that informs or engages website visitors. Press releases, site announcements, and informal blog-like entries may all be created with a <em>story</em> entry. By default, a <em>story</em> entry is automatically featured on the site's initial home page, and provides the ability to post comments.",
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'has_body' => '1',
+  'body_label' => 'Body',
+  'min_word_count' => '0',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'orig_type' => 'story',
+))->values(array(
+  'type' => 'test_event',
+  'name' => 'Migrate test event',
+  'module' => 'node',
+  'description' => 'test event description here',
+  'help' => 'help text here',
+  'has_title' => '1',
+  'title_label' => 'Event Name',
+  'has_body' => '1',
+  'body_label' => 'Body',
+  'min_word_count' => '0',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'orig_type' => 'event',
+))->values(array(
+  'type' => 'test_page',
+  'name' => 'Migrate test page',
+  'module' => 'node',
+  'description' => "A <em>page</em>, similar in form to a <em>story</em>, is a simple method for creating and displaying information that rarely changes, such as an \"About us\" section of a website. By default, a <em>page</em> entry does not allow visitor comments and is not featured on the site's initial home page.",
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'has_body' => '1',
+  'body_label' => 'This is the body field label',
+  'min_word_count' => '0',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'orig_type' => 'page',
+))->values(array(
+  'type' => 'test_planet',
+  'name' => 'Migrate test planet',
+  'module' => 'node',
+  'description' => "A <em>story</em>, similar in form to a <em>page</em>, is ideal for creating and displaying content that informs or engages website visitors. Press releases, site announcements, and informal blog-like entries may all be created with a <em>story</em> entry. By default, a <em>story</em> entry is automatically featured on the site's initial home page, and provides the ability to post comments.",
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'has_body' => '0',
+  'body_label' => 'Body',
+  'min_word_count' => '0',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'orig_type' => 'test_planet',
+))->values(array(
+  'type' => 'test_story',
+  'name' => 'Migrate test story',
+  'module' => 'node',
+  'description' => "A <em>story</em>, similar in form to a <em>page</em>, is ideal for creating and displaying content that informs or engages website visitors. Press releases, site announcements, and informal blog-like entries may all be created with a <em>story</em> entry. By default, a <em>story</em> entry is automatically featured on the site's initial home page, and provides the ability to post comments.",
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'has_body' => '0',
+  'body_label' => 'Body',
+  'min_word_count' => '0',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'orig_type' => 'story',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Permission.php b/core/modules/migrate_drupal/src/Tests/Table/Permission.php
new file mode 100644
index 0000000..c6ce566
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Permission.php
@@ -0,0 +1,76 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Permission.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the permission table.
+ */
+class Permission extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("permission", array(
+  'fields' => array(
+    'pid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+    ),
+    'rid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'perm' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+    'tid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("permission")->fields(array(
+  'pid',
+  'rid',
+  'perm',
+  'tid',
+))
+    ->values(array(
+  'pid' => '1',
+  'rid' => '1',
+  'perm' => 'migrate test anonymous permission',
+  'tid' => '0',
+))->values(array(
+  'pid' => '2',
+  'rid' => '2',
+  'perm' => 'migrate test authenticated permission',
+  'tid' => '0',
+))->values(array(
+  'pid' => '3',
+  'rid' => '3',
+  'perm' => 'migrate test role 1 test permission',
+  'tid' => '0',
+))->values(array(
+  'pid' => '4',
+  'rid' => '4',
+  'perm' => 'migrate test role 2 test permission, use PHP for settings, administer contact forms, skip comment approval, edit own blog content, edit any blog content, delete own blog content, delete any blog content, create forum content, delete any forum content, delete own forum content, edit any forum content, edit own forum content, administer nodes',
+  'tid' => '0',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ProfileFields.php b/core/modules/migrate_drupal/src/Tests/Table/ProfileFields.php
new file mode 100644
index 0000000..fe017f1
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ProfileFields.php
@@ -0,0 +1,210 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ProfileFields.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the profile_fields table.
+ */
+class ProfileFields extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("profile_fields", array(
+  'fields' => array(
+    'fid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'explanation' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+    'category' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+    'page' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '128',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'required' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'register' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'visibility' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'autocomplete' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'options' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+  ),
+));
+    $this->database->insert("profile_fields")->fields(array(
+  'fid',
+  'title',
+  'name',
+  'explanation',
+  'category',
+  'page',
+  'type',
+  'weight',
+  'required',
+  'register',
+  'visibility',
+  'autocomplete',
+  'options',
+))
+    ->values(array(
+  'fid' => '8',
+  'title' => 'Favorite color',
+  'name' => 'profile_color',
+  'explanation' => 'List your favorite color',
+  'category' => 'Personal information',
+  'page' => 'Peole whose favorite color is %value',
+  'type' => 'textfield',
+  'weight' => '-10',
+  'required' => '0',
+  'register' => '1',
+  'visibility' => '2',
+  'autocomplete' => '1',
+  'options' => '',
+))->values(array(
+  'fid' => '9',
+  'title' => 'Biography',
+  'name' => 'profile_biography',
+  'explanation' => 'Tell people a little bit about yourself',
+  'category' => 'Personal information',
+  'page' => '',
+  'type' => 'textarea',
+  'weight' => '-8',
+  'required' => '0',
+  'register' => '0',
+  'visibility' => '2',
+  'autocomplete' => '0',
+  'options' => '',
+))->values(array(
+  'fid' => '10',
+  'title' => 'Sell your email address?',
+  'name' => 'profile_sell_address',
+  'explanation' => "If you check this box, we'll sell your address to spammers to help line the pockets of our shareholders. Thanks!",
+  'category' => 'Communication preferences',
+  'page' => 'People who want us to sell their address',
+  'type' => 'checkbox',
+  'weight' => '-10',
+  'required' => '0',
+  'register' => '1',
+  'visibility' => '1',
+  'autocomplete' => '0',
+  'options' => '',
+))->values(array(
+  'fid' => '11',
+  'title' => 'Sales Category',
+  'name' => 'profile_sold_to',
+  'explanation' => "Select the sales categories to which this user's address was sold.",
+  'category' => 'Administrative data',
+  'page' => 'People whose address was sold to %value',
+  'type' => 'selection',
+  'weight' => '-10',
+  'required' => '0',
+  'register' => '0',
+  'visibility' => '4',
+  'autocomplete' => '0',
+  'options' => "Pill spammers\r\nFitness spammers\r\nBack\\slash\r\nForward/slash\r\nDot.in.the.middle",
+))->values(array(
+  'fid' => '12',
+  'title' => 'Favorite bands',
+  'name' => 'profile_bands',
+  'explanation' => "Enter your favorite bands. When you've saved your profile, you'll be able to find other people with the same favorites.",
+  'category' => 'Personal information',
+  'page' => '',
+  'type' => 'list',
+  'weight' => '-6',
+  'required' => '0',
+  'register' => '1',
+  'visibility' => '3',
+  'autocomplete' => '1',
+  'options' => '',
+))->values(array(
+  'fid' => '14',
+  'title' => 'Birthdate',
+  'name' => 'profile_birthdate',
+  'explanation' => "Enter your birth date and we'll send you a coupon.",
+  'category' => 'Personal information',
+  'page' => '',
+  'type' => 'date',
+  'weight' => '4',
+  'required' => '0',
+  'register' => '0',
+  'visibility' => '2',
+  'autocomplete' => '0',
+  'options' => '',
+))->values(array(
+  'fid' => '15',
+  'title' => 'I love migrations',
+  'name' => 'profile_love_migrations',
+  'explanation' => 'If you check this box, you love migrations.',
+  'category' => 'Personal information',
+  'page' => 'People who love migrations',
+  'type' => 'checkbox',
+  'weight' => '-15',
+  'required' => '0',
+  'register' => '0',
+  'visibility' => '2',
+  'autocomplete' => '0',
+  'options' => '',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/ProfileValues.php b/core/modules/migrate_drupal/src/Tests/Table/ProfileValues.php
new file mode 100644
index 0000000..1777eed
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/ProfileValues.php
@@ -0,0 +1,190 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\ProfileValues.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the profile_values table.
+ */
+class ProfileValues extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("profile_values", array(
+  'fields' => array(
+    'fid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'value' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+  ),
+));
+    $this->database->insert("profile_values")->fields(array(
+  'fid',
+  'uid',
+  'value',
+))
+    ->values(array(
+  'fid' => '8',
+  'uid' => '2',
+  'value' => 'red',
+))->values(array(
+  'fid' => '9',
+  'uid' => '2',
+  'value' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nulla sapien, congue nec risus ut, adipiscing aliquet felis. Maecenas quis justo vel nulla varius euismod. Quisque metus metus, cursus sit amet sem non, bibendum vehicula elit. Cras dui nisl, eleifend at iaculis vitae, lacinia ut felis. Nullam aliquam ligula volutpat nulla consectetur accumsan. Maecenas tincidunt molestie diam, a accumsan enim fringilla sit amet. Morbi a tincidunt tellus. Donec imperdiet scelerisque porta. Sed quis sem bibendum eros congue sodales. Vivamus vel fermentum est, at rutrum orci. Nunc consectetur purus ut dolor pulvinar, ut volutpat felis congue. Cras tincidunt odio sed neque sollicitudin, vehicula tempor metus scelerisque.',
+))->values(array(
+  'fid' => '10',
+  'uid' => '2',
+  'value' => '1',
+))->values(array(
+  'fid' => '11',
+  'uid' => '2',
+  'value' => 'Back\slash',
+))->values(array(
+  'fid' => '12',
+  'uid' => '2',
+  'value' => "AC/DC\n,,Eagles\r\nElton John,Lemonheads\r\n\r\nRolling Stones\rQueen\nThe White Stripes",
+))->values(array(
+  'fid' => '13',
+  'uid' => '2',
+  'value' => 'http://example.com/blog',
+))->values(array(
+  'fid' => '14',
+  'uid' => '2',
+  'value' => 'a:3:{s:5:"month";s:1:"6";s:3:"day";s:1:"2";s:4:"year";s:4:"1974";}',
+))->values(array(
+  'fid' => '8',
+  'uid' => '8',
+  'value' => 'brown',
+))->values(array(
+  'fid' => '9',
+  'uid' => '8',
+  'value' => 'Nunc condimentum ligula felis, eget lacinia purus accumsan at. Pellentesque eu lobortis felis. Duis at accumsan nisl, vel pulvinar risus. Nullam venenatis, tellus non eleifend hendrerit, augue nulla rhoncus leo, eget convallis enim sem ut velit. Mauris tincidunt enim ut eros volutpat dapibus. Curabitur augue libero, imperdiet eget orci sed, malesuada dapibus tellus. Nam lacus sapien, convallis vitae quam vel, bibendum commodo odio.',
+))->values(array(
+  'fid' => '10',
+  'uid' => '8',
+  'value' => '0',
+))->values(array(
+  'fid' => '11',
+  'uid' => '8',
+  'value' => 'Forward/slash',
+))->values(array(
+  'fid' => '12',
+  'uid' => '8',
+  'value' => "Deep Purple\nWho\nThe Beatles",
+))->values(array(
+  'fid' => '13',
+  'uid' => '8',
+  'value' => 'http://blog.example.com',
+))->values(array(
+  'fid' => '14',
+  'uid' => '8',
+  'value' => 'a:3:{s:5:"month";s:1:"9";s:3:"day";s:1:"9";s:4:"year";s:4:"1980";}',
+))->values(array(
+  'fid' => '8',
+  'uid' => '15',
+  'value' => 'orange',
+))->values(array(
+  'fid' => '9',
+  'uid' => '15',
+  'value' => 'Donec a diam volutpat augue fringilla fringilla. Mauris ultricies turpis ut lacus tempus, vitae pharetra lacus mattis. Nulla semper dui euismod sem bibendum, in eleifend nisi malesuada. Vivamus orci mauris, volutpat vitae enim ac, aliquam tempus lectus.',
+))->values(array(
+  'fid' => '10',
+  'uid' => '15',
+  'value' => '1',
+))->values(array(
+  'fid' => '11',
+  'uid' => '15',
+  'value' => 'Dot.in.the.middle',
+))->values(array(
+  'fid' => '12',
+  'uid' => '15',
+  'value' => "ABBA\nBoney M",
+))->values(array(
+  'fid' => '13',
+  'uid' => '15',
+  'value' => 'http://example.com/journal',
+))->values(array(
+  'fid' => '14',
+  'uid' => '15',
+  'value' => 'a:3:{s:5:"month";s:2:"11";s:3:"day";s:2:"25";s:4:"year";s:4:"1982";}',
+))->values(array(
+  'fid' => '8',
+  'uid' => '16',
+  'value' => 'blue',
+))->values(array(
+  'fid' => '9',
+  'uid' => '16',
+  'value' => 'Pellentesque sit amet sem et purus pretium consectetuer.',
+))->values(array(
+  'fid' => '10',
+  'uid' => '16',
+  'value' => '0',
+))->values(array(
+  'fid' => '11',
+  'uid' => '16',
+  'value' => 'Faithful servant',
+))->values(array(
+  'fid' => '12',
+  'uid' => '16',
+  'value' => "Van Halen\nDave M",
+))->values(array(
+  'fid' => '13',
+  'uid' => '16',
+  'value' => 'http://example.com/monkeys',
+))->values(array(
+  'fid' => '14',
+  'uid' => '16',
+  'value' => 'a:3:{s:5:"month";s:1:"9";s:3:"day";s:2:"23";s:4:"year";s:4:"1939";}',
+))->values(array(
+  'fid' => '8',
+  'uid' => '17',
+  'value' => 'yellow',
+))->values(array(
+  'fid' => '9',
+  'uid' => '17',
+  'value' => 'The quick brown fox jumped over the lazy dog.',
+))->values(array(
+  'fid' => '10',
+  'uid' => '17',
+  'value' => '0',
+))->values(array(
+  'fid' => '11',
+  'uid' => '17',
+  'value' => 'Anonymous donor',
+))->values(array(
+  'fid' => '12',
+  'uid' => '17',
+  'value' => "Toto\nJohn Denver",
+))->values(array(
+  'fid' => '13',
+  'uid' => '17',
+  'value' => 'http://example.com/penguins',
+))->values(array(
+  'fid' => '14',
+  'uid' => '17',
+  'value' => 'a:3:{s:5:"month";s:2:"12";s:3:"day";s:2:"18";s:4:"year";s:4:"1942";}',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Role.php b/core/modules/migrate_drupal/src/Tests/Table/Role.php
new file mode 100644
index 0000000..bcceb1b
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Role.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Role.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the role table.
+ */
+class Role extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("role", array(
+  'fields' => array(
+    'rid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '64',
+      'default' => '',
+    ),
+  ),
+));
+    $this->database->insert("role")->fields(array(
+  'rid',
+  'name',
+))
+    ->values(array(
+  'rid' => '1',
+  'name' => 'anonymous user',
+))->values(array(
+  'rid' => '2',
+  'name' => 'authenticated user',
+))->values(array(
+  'rid' => '3',
+  'name' => 'migrate test role 1',
+))->values(array(
+  'rid' => '4',
+  'name' => 'migrate test role 2',
+))->values(array(
+  'rid' => '5',
+  'name' => 'migrate test role 3 that is longer than thirty two characters',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/System.php b/core/modules/migrate_drupal/src/Tests/Table/System.php
new file mode 100644
index 0000000..12924d5
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/System.php
@@ -0,0 +1,185 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\System.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the system table.
+ */
+class System extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("system", array(
+  'fields' => array(
+    'filename' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'owner' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'throttle' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'bootstrap' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'schema_version' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '-1',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'info' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+  ),
+));
+    $this->database->insert("system")->fields(array(
+  'filename',
+  'name',
+  'type',
+  'owner',
+  'status',
+  'throttle',
+  'bootstrap',
+  'schema_version',
+  'weight',
+  'info',
+))
+    ->values(array(
+  'filename' => 'modules/aggregator',
+  'name' => 'aggregator',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6001',
+  'weight' => '0',
+  'info' => NULL,
+))->values(array(
+  'filename' => 'modules/comment',
+  'name' => 'comment',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6001',
+  'weight' => '0',
+  'info' => NULL,
+))->values(array(
+  'filename' => 'modules/contact',
+  'name' => 'contact',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6001',
+  'weight' => '0',
+  'info' => NULL,
+))->values(array(
+  'filename' => 'modules/content',
+  'name' => 'content',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6001',
+  'weight' => '0',
+  'info' => NULL,
+))->values(array(
+  'filename' => 'modules/menu',
+  'name' => 'menu',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6000',
+  'weight' => '0',
+  'info' => NULL,
+))->values(array(
+  'filename' => 'modules/profile',
+  'name' => 'profile',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6001',
+  'weight' => '0',
+  'info' => NULL,
+))->values(array(
+  'filename' => 'modules/taxonomy',
+  'name' => 'taxonomy',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6001',
+  'weight' => '0',
+  'info' => NULL,
+))->values(array(
+  'filename' => 'modules/upload',
+  'name' => 'upload',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6000',
+  'weight' => '0',
+  'info' => NULL,
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/TermData.php b/core/modules/migrate_drupal/src/Tests/Table/TermData.php
new file mode 100644
index 0000000..b6acb2b
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/TermData.php
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\TermData.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the term_data table.
+ */
+class TermData extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("term_data", array(
+  'fields' => array(
+    'tid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'description' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("term_data")->fields(array(
+  'tid',
+  'vid',
+  'name',
+  'description',
+  'weight',
+))
+    ->values(array(
+  'tid' => '1',
+  'vid' => '1',
+  'name' => 'term 1 of vocabulary 1',
+  'description' => 'description of term 1 of vocabulary 1',
+  'weight' => '0',
+))->values(array(
+  'tid' => '2',
+  'vid' => '2',
+  'name' => 'term 2 of vocabulary 2',
+  'description' => 'description of term 2 of vocabulary 2',
+  'weight' => '3',
+))->values(array(
+  'tid' => '3',
+  'vid' => '2',
+  'name' => 'term 3 of vocabulary 2',
+  'description' => 'description of term 3 of vocabulary 2',
+  'weight' => '4',
+))->values(array(
+  'tid' => '4',
+  'vid' => '3',
+  'name' => 'term 4 of vocabulary 3',
+  'description' => 'description of term 4 of vocabulary 3',
+  'weight' => '6',
+))->values(array(
+  'tid' => '5',
+  'vid' => '3',
+  'name' => 'term 5 of vocabulary 3',
+  'description' => 'description of term 5 of vocabulary 3',
+  'weight' => '7',
+))->values(array(
+  'tid' => '6',
+  'vid' => '3',
+  'name' => 'term 6 of vocabulary 3',
+  'description' => 'description of term 6 of vocabulary 3',
+  'weight' => '8',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/TermHierarchy.php b/core/modules/migrate_drupal/src/Tests/Table/TermHierarchy.php
new file mode 100644
index 0000000..e4bcddb
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/TermHierarchy.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\TermHierarchy.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the term_hierarchy table.
+ */
+class TermHierarchy extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("term_hierarchy", array(
+  'fields' => array(
+    'tid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'parent' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("term_hierarchy")->fields(array(
+  'tid',
+  'parent',
+))
+    ->values(array(
+  'tid' => '2',
+  'parent' => '0',
+))->values(array(
+  'tid' => '4',
+  'parent' => '0',
+))->values(array(
+  'tid' => '1',
+  'parent' => '2',
+))->values(array(
+  'tid' => '3',
+  'parent' => '2',
+))->values(array(
+  'tid' => '5',
+  'parent' => '4',
+))->values(array(
+  'tid' => '6',
+  'parent' => '4',
+))->values(array(
+  'tid' => '6',
+  'parent' => '5',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/TermNode.php b/core/modules/migrate_drupal/src/Tests/Table/TermNode.php
new file mode 100644
index 0000000..42e9477
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/TermNode.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\TermNode.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the term_node table.
+ */
+class TermNode extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("term_node", array(
+  'fields' => array(
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'tid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("term_node")->fields(array(
+  'nid',
+  'vid',
+  'tid',
+))
+    ->values(array(
+  'nid' => '1',
+  'vid' => '1',
+  'tid' => '1',
+))->values(array(
+  'nid' => '1',
+  'vid' => '2',
+  'tid' => '4',
+))->values(array(
+  'nid' => '1',
+  'vid' => '2',
+  'tid' => '5',
+))->values(array(
+  'nid' => '2',
+  'vid' => '3',
+  'tid' => '2',
+))->values(array(
+  'nid' => '2',
+  'vid' => '3',
+  'tid' => '3',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Upload.php b/core/modules/migrate_drupal/src/Tests/Table/Upload.php
new file mode 100644
index 0000000..2c1cf26
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Upload.php
@@ -0,0 +1,109 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Upload.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the upload table.
+ */
+class Upload extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("upload", array(
+  'fields' => array(
+    'fid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'description' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'list' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '3',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("upload")->fields(array(
+  'fid',
+  'nid',
+  'vid',
+  'description',
+  'list',
+  'weight',
+))
+    ->values(array(
+  'fid' => '1',
+  'nid' => '1',
+  'vid' => '1',
+  'description' => 'file 1-1-1',
+  'list' => '0',
+  'weight' => '5',
+))->values(array(
+  'fid' => '2',
+  'nid' => '1',
+  'vid' => '2',
+  'description' => 'file 1-2-2',
+  'list' => '1',
+  'weight' => '4',
+))->values(array(
+  'fid' => '3',
+  'nid' => '1',
+  'vid' => '2',
+  'description' => 'file 1-2-3',
+  'list' => '0',
+  'weight' => '3',
+))->values(array(
+  'fid' => '2',
+  'nid' => '2',
+  'vid' => '3',
+  'description' => 'file 2-3-2',
+  'list' => '1',
+  'weight' => '2',
+))->values(array(
+  'fid' => '3',
+  'nid' => '2',
+  'vid' => '3',
+  'description' => 'file 2-3-3',
+  'list' => '0',
+  'weight' => '1',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/UrlAlias.php b/core/modules/migrate_drupal/src/Tests/Table/UrlAlias.php
new file mode 100644
index 0000000..953c144
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/UrlAlias.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\UrlAlias.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the url_alias table.
+ */
+class UrlAlias extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("url_alias", array(
+  'fields' => array(
+    'pid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'src' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'dst' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '12',
+      'default' => '',
+    ),
+  ),
+));
+    $this->database->insert("url_alias")->fields(array(
+  'pid',
+  'src',
+  'dst',
+  'language',
+))
+    ->values(array(
+  'pid' => '1',
+  'src' => 'node/1',
+  'dst' => 'alias-one',
+  'language' => 'en',
+))->values(array(
+  'pid' => '2',
+  'src' => 'node/2',
+  'dst' => 'alias-two',
+  'language' => 'en',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Users.php b/core/modules/migrate_drupal/src/Tests/Table/Users.php
new file mode 100644
index 0000000..cf90722
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Users.php
@@ -0,0 +1,306 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Users.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the users table.
+ */
+class Users extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("users", array(
+  'fields' => array(
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '60',
+      'default' => '',
+    ),
+    'pass' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'mail' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '64',
+      'default' => '',
+    ),
+    'mode' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'sort' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'threshold' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'theme' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'signature' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'signature_format' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '6',
+      'default' => '0',
+    ),
+    'created' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'access' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'login' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+    'timezone' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '8',
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '12',
+      'default' => '',
+    ),
+    'picture' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'init' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '64',
+      'default' => '',
+    ),
+    'data' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+    'timezone_name' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '50',
+      'default' => '',
+    ),
+    'timezone_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '11',
+      'default' => '0',
+    ),
+    'pass_plain' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'expected_timezone' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '50',
+    ),
+  ),
+));
+    $this->database->insert("users")->fields(array(
+  'uid',
+  'name',
+  'pass',
+  'mail',
+  'mode',
+  'sort',
+  'threshold',
+  'theme',
+  'signature',
+  'signature_format',
+  'created',
+  'access',
+  'login',
+  'status',
+  'timezone',
+  'language',
+  'picture',
+  'init',
+  'data',
+  'timezone_name',
+  'timezone_id',
+  'pass_plain',
+  'expected_timezone',
+))
+    ->values(array(
+  'uid' => '2',
+  'name' => 'john.doe',
+  'pass' => '671cc45b3e2c6eb751d6a554dc5a5fe7',
+  'mail' => 'john.doe@example.com',
+  'mode' => '0',
+  'sort' => '0',
+  'threshold' => '0',
+  'theme' => '',
+  'signature' => 'John Doe | john.doe@example.com',
+  'signature_format' => '1',
+  'created' => '1391150052',
+  'access' => '1391259672',
+  'login' => '1391152253',
+  'status' => '1',
+  'timezone' => '3600',
+  'language' => 'fr',
+  'picture' => 'core/modules/simpletest/files/image-test.jpg',
+  'init' => 'doe@example.com',
+  'data' => 'a:1:{s:7:"contact";i:1;}',
+  'timezone_name' => NULL,
+  'timezone_id' => '0',
+  'pass_plain' => '',
+  'expected_timezone' => NULL,
+))->values(array(
+  'uid' => '8',
+  'name' => 'joe.roe',
+  'pass' => '93a70546e6c032c135499fed70cfe438',
+  'mail' => 'joe.roe@example.com',
+  'mode' => '0',
+  'sort' => '0',
+  'threshold' => '0',
+  'theme' => '',
+  'signature' => 'JR',
+  'signature_format' => '2',
+  'created' => '1391150053',
+  'access' => '1391259673',
+  'login' => '1391152254',
+  'status' => '1',
+  'timezone' => '7200',
+  'language' => 'ro',
+  'picture' => 'core/modules/simpletest/files/image-test.png',
+  'init' => 'roe@example.com',
+  'data' => 'a:1:{s:7:"contact";i:0;}',
+  'timezone_name' => 'Europe/Helsinki',
+  'timezone_id' => '0',
+  'pass_plain' => '',
+  'expected_timezone' => NULL,
+))->values(array(
+  'uid' => '15',
+  'name' => 'joe.bloggs',
+  'pass' => '2ff23139aeb404274dc67cbee8c64fb0',
+  'mail' => 'joe.bloggs@example.com',
+  'mode' => '0',
+  'sort' => '0',
+  'threshold' => '0',
+  'theme' => '',
+  'signature' => 'bloggs',
+  'signature_format' => '1',
+  'created' => '1391150054',
+  'access' => '1391259674',
+  'login' => '1391152255',
+  'status' => '1',
+  'timezone' => '3600',
+  'language' => 'en',
+  'picture' => '',
+  'init' => 'bloggs@example.com',
+  'data' => 'a:0:{}',
+  'timezone_name' => NULL,
+  'timezone_id' => '0',
+  'pass_plain' => '',
+  'expected_timezone' => NULL,
+))->values(array(
+  'uid' => '16',
+  'name' => 'sal.saraniti',
+  'pass' => '77404657c8bcd8e9aa8f3147856efb4f',
+  'mail' => 'sal.saraniti@example.com',
+  'mode' => '0',
+  'sort' => '0',
+  'threshold' => '0',
+  'theme' => '',
+  'signature' => '',
+  'signature_format' => '0',
+  'created' => '1391151054',
+  'access' => '1391259574',
+  'login' => '1391162255',
+  'status' => '1',
+  'timezone' => '3600',
+  'language' => 'en',
+  'picture' => '',
+  'init' => 'sal.saraniti@example.com',
+  'data' => 'a:0:{}',
+  'timezone_name' => NULL,
+  'timezone_id' => '0',
+  'pass_plain' => '',
+  'expected_timezone' => NULL,
+))->values(array(
+  'uid' => '17',
+  'name' => 'terry.saraniti',
+  'pass' => '8fb310d3ec746d720e0e8efefd0cce5c',
+  'mail' => 'terry.saraniti@example.com',
+  'mode' => '0',
+  'sort' => '0',
+  'threshold' => '0',
+  'theme' => '',
+  'signature' => '',
+  'signature_format' => '0',
+  'created' => '1390151054',
+  'access' => '1390259574',
+  'login' => '1390162255',
+  'status' => '1',
+  'timezone' => '3600',
+  'language' => 'en',
+  'picture' => '',
+  'init' => 'terry.saraniti@example.com',
+  'data' => 'a:0:{}',
+  'timezone_name' => NULL,
+  'timezone_id' => '0',
+  'pass_plain' => '',
+  'expected_timezone' => NULL,
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/UsersRoles.php b/core/modules/migrate_drupal/src/Tests/Table/UsersRoles.php
new file mode 100644
index 0000000..d886e56
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/UsersRoles.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\UsersRoles.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the users_roles table.
+ */
+class UsersRoles extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("users_roles", array(
+  'fields' => array(
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'rid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+));
+    $this->database->insert("users_roles")->fields(array(
+  'uid',
+  'rid',
+))
+    ->values(array(
+  'uid' => '2',
+  'rid' => '3',
+))->values(array(
+  'uid' => '15',
+  'rid' => '3',
+))->values(array(
+  'uid' => '16',
+  'rid' => '3',
+))->values(array(
+  'uid' => '8',
+  'rid' => '4',
+))->values(array(
+  'uid' => '15',
+  'rid' => '4',
+))->values(array(
+  'uid' => '17',
+  'rid' => '4',
+))->values(array(
+  'uid' => '8',
+  'rid' => '5',
+))->values(array(
+  'uid' => '15',
+  'rid' => '5',
+))->values(array(
+  'uid' => '16',
+  'rid' => '5',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Variable.php b/core/modules/migrate_drupal/src/Tests/Table/Variable.php
new file mode 100644
index 0000000..7b9efc3
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Variable.php
@@ -0,0 +1,449 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Variable.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the variable table.
+ */
+class Variable extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("variable", array(
+  'fields' => array(
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'value' => array(
+      'type' => 'blob',
+      'not null' => TRUE,
+      'length' => NULL,
+    ),
+  ),
+));
+    $this->database->insert("variable")->fields(array(
+  'name',
+  'value',
+))
+    ->values(array(
+  'name' => 'actions_max_stack',
+  'value' => 'i:35;',
+))->values(array(
+  'name' => 'admin_compact_mode',
+  'value' => 'b:0;',
+))->values(array(
+  'name' => 'aggregator_allowed_html_tags',
+  'value' => 's:70:"<a> <b> <br /> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>";',
+))->values(array(
+  'name' => 'aggregator_clear',
+  'value' => 's:7:"9676800";',
+))->values(array(
+  'name' => 'aggregator_fetcher',
+  'value' => 's:10:"aggregator";',
+))->values(array(
+  'name' => 'aggregator_parser',
+  'value' => 's:10:"aggregator";',
+))->values(array(
+  'name' => 'aggregator_processors',
+  'value' => 'a:1:{i:0;s:10:"aggregator";}',
+))->values(array(
+  'name' => 'aggregator_summary_items',
+  'value' => 's:1:"3";',
+))->values(array(
+  'name' => 'aggregator_teaser_length',
+  'value' => 's:3:"600";',
+))->values(array(
+  'name' => 'allowed_html_1',
+  'value' => 's:61:"<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>";',
+))->values(array(
+  'name' => 'allow_insecure_uploads',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'anonymous',
+  'value' => 's:5:"Guest";',
+))->values(array(
+  'name' => 'book_allowed_types',
+  'value' => 'a:1:{i:0;s:4:"book";}',
+))->values(array(
+  'name' => 'book_block_mode',
+  'value' => 's:9:"all pages";',
+))->values(array(
+  'name' => 'book_child_type',
+  'value' => 's:4:"book";',
+))->values(array(
+  'name' => 'cache',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'cache_lifetime',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'comment_anonymous_page',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'comment_anonymous_story',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'comment_controls_page',
+  'value' => 's:1:"3";',
+))->values(array(
+  'name' => 'comment_controls_story',
+  'value' => 's:1:"3";',
+))->values(array(
+  'name' => 'comment_default_mode_page',
+  'value' => 's:1:"4";',
+))->values(array(
+  'name' => 'comment_default_mode_story',
+  'value' => 's:1:"2";',
+))->values(array(
+  'name' => 'comment_default_order_page',
+  'value' => 's:1:"1";',
+))->values(array(
+  'name' => 'comment_default_order_story',
+  'value' => 's:1:"1";',
+))->values(array(
+  'name' => 'comment_default_per_page_page',
+  'value' => 's:2:"50";',
+))->values(array(
+  'name' => 'comment_default_per_page_story',
+  'value' => 's:2:"70";',
+))->values(array(
+  'name' => 'comment_form_location_page',
+  'value' => 's:1:"0";',
+))->values(array(
+  'name' => 'comment_form_location_story',
+  'value' => 's:1:"0";',
+))->values(array(
+  'name' => 'comment_page',
+  'value' => 's:1:"0";',
+))->values(array(
+  'name' => 'comment_preview_page',
+  'value' => 's:1:"1";',
+))->values(array(
+  'name' => 'comment_preview_story',
+  'value' => 's:1:"0";',
+))->values(array(
+  'name' => 'comment_story',
+  'value' => 's:1:"2";',
+))->values(array(
+  'name' => 'comment_subject_field_page',
+  'value' => 's:1:"1";',
+))->values(array(
+  'name' => 'comment_subject_field_story',
+  'value' => 's:1:"0";',
+))->values(array(
+  'name' => 'contact_default_status',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'contact_hourly_threshold',
+  'value' => 'i:3;',
+))->values(array(
+  'name' => 'cron_threshold_error',
+  'value' => 'i:1209600;',
+))->values(array(
+  'name' => 'cron_threshold_warning',
+  'value' => 'i:172800;',
+))->values(array(
+  'name' => 'date_format_long',
+  'value' => 's:24:"\L\O\N\G l, F j, Y - H:i";',
+))->values(array(
+  'name' => 'date_format_medium',
+  'value' => 's:27:"\M\E\D\I\U\M D, m/d/Y - H:i";',
+))->values(array(
+  'name' => 'date_format_short',
+  'value' => 's:22:"\S\H\O\R\T m/d/Y - H:i";',
+))->values(array(
+  'name' => 'dblog_row_limit',
+  'value' => 'i:1000;',
+))->values(array(
+  'name' => 'error_level',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'feed_default_items',
+  'value' => 'i:10;',
+))->values(array(
+  'name' => 'feed_item_length',
+  'value' => 's:5:"title";',
+))->values(array(
+  'name' => 'file_description_length',
+  'value' => 'i:128;',
+))->values(array(
+  'name' => 'file_description_type',
+  'value' => 's:9:"textfield";',
+))->values(array(
+  'name' => 'file_directory_path',
+  'value' => 's:29:"core/modules/simpletest/files";',
+))->values(array(
+  'name' => 'file_directory_temp',
+  'value' => 's:10:"files/temp";',
+))->values(array(
+  'name' => 'file_icon_directory',
+  'value' => 's:25:"sites/default/files/icons";',
+))->values(array(
+  'name' => 'filter_allowed_protocols',
+  'value' => 'a:13:{i:0;s:4:"http";i:1;s:5:"https";i:2;s:3:"ftp";i:3;s:4:"news";i:4;s:4:"nntp";i:5;s:3:"tel";i:6;s:6:"telnet";i:7;s:6:"mailto";i:8;s:3:"irc";i:9;s:3:"ssh";i:10;s:4:"sftp";i:11;s:6:"webcal";i:12;s:4:"rtsp";}',
+))->values(array(
+  'name' => 'filter_html_help_1',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'filter_html_nofollow_1',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'filter_url_length_1',
+  'value' => 's:2:"72";',
+))->values(array(
+  'name' => 'forum_block_num_0',
+  'value' => 's:1:"5";',
+))->values(array(
+  'name' => 'forum_block_num_1',
+  'value' => 's:1:"5";',
+))->values(array(
+  'name' => 'forum_hot_topic',
+  'value' => 's:2:"15";',
+))->values(array(
+  'name' => 'forum_nav_vocabulary',
+  'value' => 's:1:"1";',
+))->values(array(
+  'name' => 'forum_order',
+  'value' => 's:1:"1";',
+))->values(array(
+  'name' => 'forum_per_page',
+  'value' => 's:2:"25";',
+))->values(array(
+  'name' => 'image_jpeg_quality',
+  'value' => 'i:75;',
+))->values(array(
+  'name' => 'image_toolkit',
+  'value' => 's:2:"gd";',
+))->values(array(
+  'name' => 'locale_cache_strings',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'locale_js_directory',
+  'value' => 's:9:"languages";',
+))->values(array(
+  'name' => 'menu_override_parent_selector',
+  'value' => 'b:0;',
+))->values(array(
+  'name' => 'minimum_word_size',
+  'value' => 's:1:"3";',
+))->values(array(
+  'name' => 'node_admin_theme',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'node_options_test_event',
+  'value' => 'a:2:{i:0;s:6:"sticky";i:1;s:8:"revision";}',
+))->values(array(
+  'name' => 'node_options_test_page',
+  'value' => 'a:3:{i:0;s:6:"status";i:1;s:7:"promote";i:2;s:6:"sticky";}',
+))->values(array(
+  'name' => 'node_options_test_planet',
+  'value' => 'a:2:{i:0;s:6:"sticky";i:1;s:8:"revision";}',
+))->values(array(
+  'name' => 'node_options_test_story',
+  'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
+))->values(array(
+  'name' => 'node_preview',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'node_rank_comments',
+  'value' => 's:1:"5";',
+))->values(array(
+  'name' => 'node_rank_promote',
+  'value' => 's:1:"0";',
+))->values(array(
+  'name' => 'node_rank_recent',
+  'value' => 's:1:"0";',
+))->values(array(
+  'name' => 'node_rank_relevance',
+  'value' => 's:1:"2";',
+))->values(array(
+  'name' => 'node_rank_sticky',
+  'value' => 's:1:"8";',
+))->values(array(
+  'name' => 'node_rank_views',
+  'value' => 's:1:"1";',
+))->values(array(
+  'name' => 'overlap_cjk',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'page_compression',
+  'value' => 's:1:"1";',
+))->values(array(
+  'name' => 'preprocess_css',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'preprocess_js',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'search_cron_limit',
+  'value' => 's:3:"100";',
+))->values(array(
+  'name' => 'simpletest_clear_results',
+  'value' => 'b:1;',
+))->values(array(
+  'name' => 'simpletest_httpauth_method',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'simpletest_httpauth_password',
+  'value' => 'N;',
+))->values(array(
+  'name' => 'simpletest_httpauth_username',
+  'value' => 'N;',
+))->values(array(
+  'name' => 'simpletest_verbose',
+  'value' => 'b:1;',
+))->values(array(
+  'name' => 'site_403',
+  'value' => 's:4:"user";',
+))->values(array(
+  'name' => 'site_404',
+  'value' => 's:14:"page-not-found";',
+))->values(array(
+  'name' => 'site_frontpage',
+  'value' => 's:4:"node";',
+))->values(array(
+  'name' => 'site_mail',
+  'value' => 's:21:"site_mail@example.com";',
+))->values(array(
+  'name' => 'site_name',
+  'value' => 's:9:"site_name";',
+))->values(array(
+  'name' => 'site_offline',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'site_offline_message',
+  'value' => 's:94:"Drupal is currently under maintenance. We should be back shortly. Thank you for your patience.";',
+))->values(array(
+  'name' => 'site_slogan',
+  'value' => 's:13:"Migrate rocks";',
+))->values(array(
+  'name' => 'statistics_block_top_all_num',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'statistics_block_top_day_num',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'statistics_block_top_last_num',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'statistics_count_content_views',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'statistics_enable_access_log',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'statistics_flush_accesslog_timer',
+  'value' => 'i:259200;',
+))->values(array(
+  'name' => 'syslog_facility',
+  'value' => 'i:128;',
+))->values(array(
+  'name' => 'syslog_identity',
+  'value' => 's:6:"drupal";',
+))->values(array(
+  'name' => 'taxonomy_override_selector',
+  'value' => 'b:0;',
+))->values(array(
+  'name' => 'taxonomy_terms_per_page_admin',
+  'value' => 'i:100;',
+))->values(array(
+  'name' => 'teaser_length',
+  'value' => 'i:456;',
+))->values(array(
+  'name' => 'theme_settings',
+  'value' => 'a:22:{s:11:"toggle_logo";i:1;s:11:"toggle_name";i:1;s:13:"toggle_slogan";i:0;s:14:"toggle_mission";i:1;s:24:"toggle_node_user_picture";i:0;s:27:"toggle_comment_user_picture";i:0;s:13:"toggle_search";i:0;s:14:"toggle_favicon";i:1;s:20:"toggle_primary_links";i:1;s:22:"toggle_secondary_links";i:1;s:21:"toggle_node_info_test";i:1;s:26:"toggle_node_info_something";i:1;s:12:"default_logo";i:1;s:9:"logo_path";s:0:"";s:11:"logo_upload";s:0:"";s:15:"default_favicon";i:1;s:12:"favicon_path";s:0:"";s:14:"favicon_upload";s:0:"";s:26:"toggle_node_info_test_page";i:1;s:27:"toggle_node_info_test_story";i:1;s:27:"toggle_node_info_test_event";i:1;s:28:"toggle_node_info_test_planet";i:1;}',
+))->values(array(
+  'name' => 'update_check_frequency',
+  'value' => 's:1:"7";',
+))->values(array(
+  'name' => 'update_fetch_url',
+  'value' => 's:41:"http://updates.drupal.org/release-history";',
+))->values(array(
+  'name' => 'update_max_fetch_attempts',
+  'value' => 'i:2;',
+))->values(array(
+  'name' => 'update_notification_threshold',
+  'value' => 's:3:"all";',
+))->values(array(
+  'name' => 'update_notify_emails',
+  'value' => 'a:0:{}',
+))->values(array(
+  'name' => 'upload_article',
+  'value' => 'b:0;',
+))->values(array(
+  'name' => 'upload_page',
+  'value' => 'b:1;',
+))->values(array(
+  'name' => 'upload_story',
+  'value' => 'b:1;',
+))->values(array(
+  'name' => 'user_email_verification',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'user_mail_password_reset_body',
+  'value' => "s:409:\"!username,\n\nA request to reset the password for your account has been made at !site.\n\nYou may now log in to !uri_brief by clicking on this link or copying and pasting it in your browser:\n\n!login_url\n\nThis is a one-time login, so it can be used only once. It expires after one day and nothing will happen if it's not used.\n\nAfter logging in, you will be redirected to !edit_uri so you can change your password.\";",
+))->values(array(
+  'name' => 'user_mail_password_reset_subject',
+  'value' => 's:52:"Replacement login information for !username at !site";',
+))->values(array(
+  'name' => 'user_mail_register_admin_created_body',
+  'value' => "s:452:\"!username,\n\nA site administrator at !site has created an account for you. You may now log in to !login_uri using the following username and password:\n\nusername: !username\npassword: !password\n\nYou may also log in by clicking on this link or copying and pasting it in your browser:\n\n!login_url\n\nThis is a one-time login, so it can be used only once.\n\nAfter logging in, you will be redirected to !edit_uri so you can change your password.\n\n\n--  !site team\";",
+))->values(array(
+  'name' => 'user_mail_register_admin_created_subject',
+  'value' => 's:52:"An administrator created an account for you at !site";',
+))->values(array(
+  'name' => 'user_mail_register_no_approval_required_body',
+  'value' => "s:426:\"!username,\n\nThank you for registering at !site. You may now log in to !login_uri using the following username and password:\n\nusername: !username\npassword: !password\n\nYou may also log in by clicking on this link or copying and pasting it in your browser:\n\n!login_url\n\nThis is a one-time login, so it can be used only once.\n\nAfter logging in, you will be redirected to !edit_uri so you can change your password.\n\n\n--  !site team\";",
+))->values(array(
+  'name' => 'user_mail_register_no_approval_required_subject',
+  'value' => 's:38:"Account details for !username at !site";',
+))->values(array(
+  'name' => 'user_mail_status_activated_body',
+  'value' => "s:419:\"!username,\n\nYour account at !site has been activated.\n\nYou may now log in by clicking on this link or copying and pasting it in your browser:\n\n!login_url\n\nThis is a one-time login, so it can be used only once.\n\nAfter logging in, you will be redirected to !edit_uri so you can change your password.\n\nOnce you have set your own password, you will be able to log in to !login_uri in the future using:\n\nusername: !username\n\";",
+))->values(array(
+  'name' => 'user_mail_status_activated_notify',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'user_mail_status_activated_subject',
+  'value' => 's:49:"Account details for !username at !site (approved)";',
+))->values(array(
+  'name' => 'user_mail_status_blocked_body',
+  'value' => "s:51:\"!username,\n\nYour account on !site has been blocked.\";",
+))->values(array(
+  'name' => 'user_mail_status_blocked_notify',
+  'value' => 'i:1;',
+))->values(array(
+  'name' => 'user_mail_status_blocked_subject',
+  'value' => 's:48:"Account details for !username at !site (blocked)";',
+))->values(array(
+  'name' => 'user_mail_status_deleted_body',
+  'value' => "s:51:\"!username,\n\nYour account on !site has been deleted.\";",
+))->values(array(
+  'name' => 'user_mail_status_deleted_subject',
+  'value' => 's:48:"Account details for !username at !site (deleted)";',
+))->values(array(
+  'name' => 'user_mail_user_mail_register_pending_approval_body',
+  'value' => "s:267:\"!username,\n\nThank you for registering at !site. Your application for an account is currently pending approval. Once it has been approved, you will receive another email containing information about how to log in, set your password, and other details.\n\n\n--  !site team\";",
+))->values(array(
+  'name' => 'user_mail_user_mail_register_pending_approval_subject',
+  'value' => 's:63:"Account details for !username at !site (pending admin approval)";',
+))->values(array(
+  'name' => 'user_register',
+  'value' => 'i:0;',
+))->values(array(
+  'name' => 'user_signatures',
+  'value' => 's:1:"1";',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Vocabulary.php b/core/modules/migrate_drupal/src/Tests/Table/Vocabulary.php
new file mode 100644
index 0000000..719102e
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/Vocabulary.php
@@ -0,0 +1,169 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Vocabulary.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the vocabulary table.
+ */
+class Vocabulary extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("vocabulary", array(
+  'fields' => array(
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'unsigned' => TRUE,
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'description' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'length' => NULL,
+    ),
+    'help' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'relations' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '3',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'hierarchy' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '3',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'multiple' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '3',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'required' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '3',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'tags' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '3',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '4',
+      'default' => '0',
+    ),
+  ),
+));
+    $this->database->insert("vocabulary")->fields(array(
+  'vid',
+  'name',
+  'description',
+  'help',
+  'relations',
+  'hierarchy',
+  'multiple',
+  'required',
+  'tags',
+  'module',
+  'weight',
+))
+    ->values(array(
+  'vid' => '1',
+  'name' => 'vocabulary 1 (i=0)',
+  'description' => 'description of vocabulary 1 (i=0)',
+  'help' => '',
+  'relations' => '1',
+  'hierarchy' => '0',
+  'multiple' => '0',
+  'required' => '0',
+  'tags' => '0',
+  'module' => 'taxonomy',
+  'weight' => '4',
+))->values(array(
+  'vid' => '2',
+  'name' => 'vocabulary 2 (i=1)',
+  'description' => 'description of vocabulary 2 (i=1)',
+  'help' => '',
+  'relations' => '1',
+  'hierarchy' => '1',
+  'multiple' => '1',
+  'required' => '0',
+  'tags' => '0',
+  'module' => 'taxonomy',
+  'weight' => '5',
+))->values(array(
+  'vid' => '3',
+  'name' => 'vocabulary 3 (i=2)',
+  'description' => 'description of vocabulary 3 (i=2)',
+  'help' => '',
+  'relations' => '1',
+  'hierarchy' => '2',
+  'multiple' => '0',
+  'required' => '0',
+  'tags' => '0',
+  'module' => 'taxonomy',
+  'weight' => '6',
+))->values(array(
+  'vid' => '4',
+  'name' => 'Tags',
+  'description' => 'Tags Vocabulary',
+  'help' => '',
+  'relations' => '1',
+  'hierarchy' => '0',
+  'multiple' => '0',
+  'required' => '0',
+  'tags' => '0',
+  'module' => 'taxonomy',
+  'weight' => '0',
+))->values(array(
+  'vid' => '5',
+  'name' => 'vocabulary name much longer than thirty two characters',
+  'description' => 'description of vocabulary name much longer than thirty two characters',
+  'help' => '',
+  'relations' => '1',
+  'hierarchy' => '3',
+  'multiple' => '1',
+  'required' => '0',
+  'tags' => '0',
+  'module' => 'taxonomy',
+  'weight' => '7',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/Table/VocabularyNodeTypes.php b/core/modules/migrate_drupal/src/Tests/Table/VocabularyNodeTypes.php
new file mode 100644
index 0000000..b036035
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/Table/VocabularyNodeTypes.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\VocabularyNodeTypes.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the vocabulary_node_types table.
+ */
+class VocabularyNodeTypes extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("vocabulary_node_types", array(
+  'fields' => array(
+    'vid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'length' => '10',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+  ),
+));
+    $this->database->insert("vocabulary_node_types")->fields(array(
+  'vid',
+  'type',
+))
+    ->values(array(
+  'vid' => '1',
+  'type' => 'story',
+))->values(array(
+  'vid' => '2',
+  'type' => 'story',
+))->values(array(
+  'vid' => '3',
+  'type' => 'story',
+))->values(array(
+  'vid' => '4',
+  'type' => 'article',
+))->values(array(
+  'vid' => '4',
+  'type' => 'page',
+))
+    ->execute();
+  }
+
+}
\ No newline at end of file
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateActionConfigsTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateActionConfigsTest.php
index 5c7daf4..843033f 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateActionConfigsTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateActionConfigsTest.php
@@ -34,7 +34,7 @@ protected function setUp() {
     parent::setUp();
     $migration = entity_load('migration', 'd6_action_settings');
     $dumps = array(
-      $this->getDumpDirectory() . '/Drupal6ActionSettings.php',
+      $this->getDumpDirectory() . '/Variable.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, $this);
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorConfigsTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorConfigsTest.php
index 331bdaa..cff9377 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorConfigsTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorConfigsTest.php
@@ -34,7 +34,7 @@ protected function setUp() {
     parent::setUp();
     $migration = entity_load('migration', 'd6_aggregator_settings');
     $dumps = array(
-      $this->getDumpDirectory() . '/Drupal6AggregatorSettings.php',
+      $this->getDumpDirectory() . '/Variable.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, $this);
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorFeedTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorFeedTest.php
index b8b503e..769c994 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorFeedTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorFeedTest.php
@@ -27,7 +27,7 @@ protected function setUp() {
     parent::setUp();
     $migration = entity_load('migration', 'd6_aggregator_feed');
     $dumps = array(
-      $this->getDumpDirectory() . '/Drupal6AggregatorFeed.php',
+      $this->getDumpDirectory() . '/AggregatorFeed.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, $this);
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorItemTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorItemTest.php
index 93f1894..672711c 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorItemTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorItemTest.php
@@ -47,7 +47,7 @@ protected function setUp() {
     /** @var \Drupal\migrate\entity\Migration $migration */
     $migration = entity_load('migration', 'd6_aggregator_item');
     $dumps = array(
-      $this->getDumpDirectory() . '/Drupal6AggregatorItem.php',
+      $this->getDumpDirectory() . '/AggregatorItem.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, $this);
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockContentTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockContentTest.php
index 8373030..f44346e 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockContentTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockContentTest.php
@@ -43,7 +43,7 @@ protected function setUp() {
     /** @var \Drupal\migrate\entity\Migration $migration */
     $migration = entity_load('migration', 'd6_custom_block');
     $dumps = array(
-      $this->getDumpDirectory() . '/Drupal6Box.php',
+      $this->getDumpDirectory() . '/Boxes.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, $this);
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockTest.php
index 9198ce5..41837c0 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockTest.php
@@ -71,7 +71,8 @@ protected function setUp() {
     /** @var \Drupal\migrate\entity\Migration $migration */
     $migration = entity_load('migration', 'd6_block');
     $dumps = array(
-      $this->getDumpDirectory() . '/Drupal6Block.php',
+      $this->getDumpDirectory() . '/Blocks.php',
+      $this->getDumpDirectory() . '/BlocksRoles.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, $this);
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateBookConfigsTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateBookConfigsTest.php
index 35de27f..c33b1f0 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateBookConfigsTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateBookConfigsTest.php
@@ -35,7 +35,7 @@ protected function setUp() {
     parent::setUp();
     $migration = entity_load('migration', 'd6_book_settings');
     $dumps = array(
-      $this->getDumpDirectory() . '/Drupal6BookSettings.php',
+      $this->getDumpDirectory() . '/Variable.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, new MigrateMessage());
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateBookTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateBookTest.php
index 9f650b7..fe55e14 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateBookTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateBookTest.php
@@ -40,7 +40,8 @@ protected function setUp() {
     $this->prepareMigrations($id_mappings);
     // Load database dumps to provide source data.
     $dumps = array(
-      $this->getDumpDirectory() . '/Drupal6Book.php',
+      $this->getDumpDirectory() . '/Book.php',
+      $this->getDumpDirectory() . '/MenuLinks.php',
     );
     $this->loadDumps($dumps);
     // Migrate books..
diff --git a/core/scripts/dump-database-d6.php b/core/scripts/dump-database-d6.php
new file mode 100644
index 0000000..b6c7333
--- /dev/null
+++ b/core/scripts/dump-database-d6.php
@@ -0,0 +1,140 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * Dump a Drupal 6 database into a Drupal PHP files that can be used by the
+ * migration path.
+ *
+ * Setup an additional database connction in your Drupal 8 settings file and
+ * run this scrip like so: drush scr cores/scropts/dump-database-d6.sh
+ */
+
+
+use Doctrine\Common\Inflector\Inflector;
+use Drupal\Core\Database\Database;
+use Drupal\Component\Utility\Variable;
+
+// Create the output directory if required.
+$output_folder = DRUPAL_ROOT . '/core/modules/migrate_drupal/src/Tests/Table';
+if (!is_dir($output_folder)) {
+  mkdir($output_folder);
+}
+
+$class_template = '<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\{{CLASS_NAME}}.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Table;
+
+use Drupal\migrate_drupal\Tests\Dump\Drupal6DumpBase;
+
+/**
+ * Generated file to represent the {{TABLE}} table.
+ */
+class {{CLASS_NAME}} extends Drupal6DumpBase {
+
+  public function load() {
+    $this->createTable("{{TABLE}}", {{TABLE_DEFINITION}});
+    $this->database->insert("{{TABLE}}")->fields({{PHP_FIELDS}})
+    {{PHP_VALUES}}
+    ->execute();
+  }
+
+}';
+
+
+// Generate a list of tables using the 'migrate' db connection.
+$connection = Database::getConnection('default', 'd6_migrate');
+$tables = $connection->query('SHOW TABLES')->fetchCol();
+
+foreach ($tables as $table) {
+
+  // Generate the class name.
+  $class = Inflector::classify($table);
+
+  // Generate teh field values.
+  $query = $connection->query("SELECT * FROM {$table}");
+  $values = '';
+  while(($row = $query->fetchAssoc()) !== FALSE) {
+    $values .= '->values(' . Variable::export($row) . ')';
+  }
+
+  // Generate the field names.
+  $query = $connection->query("SHOW COLUMNS FROM {$table}");
+  $definition = [];
+  $fields = [];
+  while(($row = $query->fetchAssoc()) !== FALSE) {
+    $field_name = $row['Field'];
+    $fields[] = $field_name;
+
+    preg_match('@([a-z]+)(?:\((\d+)(?:,(\d+))?\))?\s*(unsigned)?@', $row['Type'], $matches);
+
+    $field_type  = _db_field_type_map($matches[1]);
+    $definition['fields'][$field_name] = [
+      'type' => $field_type,
+      'not null' => $row['Null'] === 'NO',
+    ];
+
+    if ($field_type === 'numeric') {
+      $definition['fields'][$field_name]['precision'] = $matches[2];
+      $definition['fields'][$field_name]['scale'] = $matches[3];
+    }
+    else {
+      $definition['fields'][$field_name]['length'] = $matches[2];
+    }
+
+    if (isset($row['Default'])) {
+      $definition['fields'][$field_name]['default'] = $row['Default'];
+    }
+
+    if (is_numeric($matches[3])) {
+      $definition['fields'][$field_name]['scale'] = $matches[3];
+    }
+
+    // Set unsigned if it's set.
+    if (isset($matches[4])) {
+      $definition['fields'][$field_name]['unsigned'] = TRUE;
+    }
+
+  }
+  $fields = Variable::export($fields);
+  $definition = Variable::export($definition);
+
+  // Do our substitutions.
+  $php = str_replace('{{TABLE}}', $table, $class_template);
+  $php = str_replace('{{CLASS_NAME}}', $class, $php);
+  $php = str_replace('{{PHP_VALUES}}', $values, $php);
+  $php = str_replace('{{PHP_FIELDS}}', $fields, $php);
+  $php = str_replace('{{TABLE_DEFINITION}}', $definition, $php);
+
+
+  // Save the file.
+  file_put_contents($output_folder . "/$class.php", $php);
+}
+
+function _db_field_type_map($sql_type) {
+  $map = array(
+    'longtext' => 'text',
+    'tinytext' => 'text',
+    'mediumtext' => 'text',
+
+    'tinyint' => 'int',
+    'smallint' => 'int',
+    'mediumint' => 'int',
+    'bigint' => 'int',
+    'int' => 'int',
+
+    'double' => 'numeric',
+    'float' => 'numeric',
+    'decimal' => 'numeric',
+
+    'longblob' => 'blob',
+  );
+
+  return isset($map[$sql_type]) ? $map[$sql_type] : $sql_type;
+}
+
+exit;
diff --git a/core/scripts/dump-database-d6.sh b/core/scripts/dump-database-d6.sh
deleted file mode 100644
index ace93d9..0000000
--- a/core/scripts/dump-database-d6.sh
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-/**
- * Dump a Drupal 6 database into a Drupal 7 PHP script to test the upgrade
- * process.
- *
- * Run this script at the root of an existing Drupal 6 installation.
- *
- * The output of this script is a PHP script that can be ran inside Drupal 7
- * and recreates the Drupal 6 database as dumped. Transient data from cache
- * session and watchdog tables are not recorded.
- */
-
-// Define default settings.
-$cmd = 'index.php';
-$_SERVER['HTTP_HOST']       = 'default';
-$_SERVER['PHP_SELF']        = '/index.php';
-$_SERVER['REMOTE_ADDR']     = '127.0.0.1';
-$_SERVER['SERVER_SOFTWARE'] = NULL;
-$_SERVER['REQUEST_METHOD']  = 'GET';
-$_SERVER['QUERY_STRING']    = '';
-$_SERVER['PHP_SELF']        = $_SERVER['REQUEST_URI'] = '/';
-$_SERVER['HTTP_USER_AGENT'] = 'console';
-
-// Bootstrap Drupal.
-include_once './includes/bootstrap.inc';
-drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
-
-// Include the utility drupal_var_export() function.
-include_once __DIR__ . '/../includes/utility.inc';
-
-// Output the PHP header.
-$output = <<<ENDOFHEADER
-<?php
-
-/**
- * @file
- * Filled installation of Drupal 6.17, for test purposes.
- *
- * This file was generated by the dump-database-d6.sh tool, from an
- * installation of Drupal 6, filled with data using the generate-d6-content.sh
- * tool. It has the following modules installed:
-
-ENDOFHEADER;
-
-foreach (\Drupal::moduleHandler()->getModuleList() as $module => $filename) {
-  $output .= " *  - $module\n";
-}
-$output .= " */\n\n";
-
-// Get the current schema, order it by table name.
-$schema = drupal_get_schema();
-ksort($schema);
-
-// Export all the tables in the schema.
-foreach ($schema as $table => $data) {
-  // Remove descriptions to save time and code.
-  unset($data['description']);
-  foreach ($data['fields'] as &$field) {
-    unset($field['description']);
-  }
-
-  // Dump the table structure.
-  $output .= "db_create_table('" . $table . "', " . drupal_var_export($data) . ");\n";
-
-  // Don't output values for those tables.
-  if (substr($table, 0, 5) == 'cache' || $table == 'sessions' || $table == 'watchdog') {
-    $output .= "\n";
-    continue;
-  }
-
-  // Prepare the export of values.
-  $result = db_query('SELECT * FROM {'. $table .'}');
-  $insert = '';
-  while ($record = db_fetch_array($result)) {
-    // users.uid is a serial and inserting 0 into a serial can break MySQL.
-    // So record uid + 1 instead of uid for every uid and once all records
-    // are in place, fix them up.
-    if ($table == 'users') {
-      $record['uid']++;
-    }
-    $insert .= '->values('. drupal_var_export($record) .")\n";
-  }
-
-  // Dump the values if there are some.
-  if ($insert) {
-    $output .= "db_insert('". $table . "')->fields(". drupal_var_export(array_keys($data['fields'])) .")\n";
-    $output .= $insert;
-    $output .= "->execute();\n";
-  }
-
-  // Add the statement fixing the serial in the user table.
-  if ($table == 'users') {
-    $output .= "db_query('UPDATE {users} SET uid = uid - 1');\n";
-  }
-
-  $output .= "\n";
-}
-
-print $output;
