diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockInstanceTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockInstanceTest.php
new file mode 100644
index 0000000..ea78e2f
--- /dev/null
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockInstanceTest.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\custom_block\Tests\CustomBlockInstanceTest.
+ */
+
+namespace Drupal\custom_block\Tests;
+
+/**
+ * Tests placing multiple instances of a custom block.
+ */
+class CustomBlockInstanceTest extends CustomBlockTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('block', 'custom_block');
+
+  /**
+   * Declares test information.
+   */
+  public static function getInfo() {
+    return array(
+      'name' => 'Custom Block Instances',
+      'description' => 'Create a block and test placing the block twice (creating two instances).',
+      'group' => 'Custom Block',
+    );
+  }
+
+  /**
+   * Tests creating two instances of the same custom block.
+   */
+  public function testPlaceBlockTwice() {
+    $custom_block = $this->createCustomBlock();
+    $custom_block->body = $this->randomName();
+    $custom_block->save();
+
+    $block1 = $this->drupalPlaceBlock('custom_block:' . $custom_block->uuid());
+    $block2 = $this->drupalPlaceBlock('custom_block:' . $custom_block->uuid());
+
+    $this->drupalGet('<front>');
+    $this->assertText(t($block1->label()), 'Block 1 found on home.');
+    $this->assertText(t($block2->label()), 'Block 2 found on home.');
+
+    // Make sure the same custom block entity is displayed in both blocks by
+    // checking the body field.
+    $block_body = $custom_block->get('body')->value;
+    $block1_contents = $this->xpath('//div[@id = :id]//div[contains(@class, field-item)]/p', array(':id' => 'block-' . $block1->id()));
+    $block2_contents = $this->xpath('//div[@id = :id]//div[contains(@class, field-item)]/p', array(':id' => 'block-' . $block2->id()));
+    $this->assertEqual((string) $block1_contents[0], $block_body, 'Block 1 contains the custom block body.');
+    $this->assertEqual((string) $block2_contents[0], $block_body, 'Block 2 contains the custom block body.');
+  }
+
+}
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
index af49957..badd8c3 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
@@ -14,6 +14,13 @@
  */
 class BlockTest extends BlockTestBase {
 
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('block', 'views');
+
   public static function getInfo() {
     return array(
       'name' => 'Block functionality',
@@ -278,4 +285,59 @@ function testBlockRehash() {
     $this->assertEqual($settings['cache'], DRUPAL_NO_CACHE, "Test block's database entry updated to DRUPAL_NO_CACHE.");
   }
 
+  /**
+   * Tests placing the same block plugin twice.
+   */
+  function testPlaceBlockTwice() {
+    $plugin_id = 'system_powered_by_block';
+    $block1 = $this->drupalPlaceBlock($plugin_id);
+    $block2 = $this->drupalPlaceBlock($plugin_id);
+
+    $this->drupalGet('node');
+    $this->assertText(t($block1->label()), 'Block 1 found on home.');
+    $this->assertText(t($block2->label()), 'Block 2 found on home.');
+  }
+
+  /**
+   * Tests placing the same block twice with different settings.
+   */
+  function testPlaceBlockTwiceVarious() {
+    // Place two different "Who's New" blocks. One is configured to show 2
+    // users, the second is configured to show 10 users.
+    $plugin_id = 'views_block:who_s_new-block_1';
+    $block1 = $this->drupalPlaceBlock($plugin_id, array('items_per_page' => 2));
+    $block2 = $this->drupalPlaceBlock($plugin_id, array('items_per_page' => 10));
+
+    // Create 4 additional users so we end up with 5 users including the admin
+    // user created in \Drupal\block\Tests\BlockTestBase::setUp().
+    for ($i = 1; $i <= 4; $i++) {
+      $user = $this->drupalCreateUser();
+      // Log users in and out so they display in the "Who's New" block.
+      $this->drupalLogin($user);
+      $this->drupalLogout($user);
+    }
+
+    // Verify that the differently configured blocks display a different amount
+    // of users.
+    $this->drupalGet('node');
+    $result = $this->xpath('//div[@id = :id]//li[contains(@class, views-row)]//span[contains(@class, field-content)]//span', array(':id' => 'block-' . $block1->id()));
+    $this->assertEqual(count($result), 2, '2 users found in the first "Who\'s New" block.');
+
+    $result = $this->xpath('//div[@id = :id]//li[contains(@class, views-row)]//span[contains(@class, field-content)]//span', array(':id' => 'block-' . $block2->id()));
+    $this->assertEqual(count($result), 5, '5 users found in the second "Who\'s New" block.');
+  }
+
+  /**
+   * Tests placing the same menu block twice.
+   */
+  function testPlaceMenuBlockTwice() {
+    $plugin_id = 'system_menu_block:account';
+    $block1 = $this->drupalPlaceBlock($plugin_id);
+    $block2 = $this->drupalPlaceBlock($plugin_id);
+
+    $this->drupalGet('node');
+    $this->assertText(t($block1->label()), 'Block 1 found on home.');
+    $this->assertText(t($block2->label()), 'Block 2 found on home.');
+  }
+
 }
