diff --git a/core/modules/simpletest/src/KernelTestBase.php b/core/modules/simpletest/src/KernelTestBase.php
deleted file mode 100644
index 96c5cf6..0000000
--- a/core/modules/simpletest/src/KernelTestBase.php
+++ /dev/null
@@ -1,617 +0,0 @@
-<?php
-
-namespace Drupal\simpletest;
-
-use Drupal\Component\Utility\Html;
-use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Component\Utility\Variable;
-use Drupal\Core\Database\Database;
-use Drupal\Core\DependencyInjection\ContainerBuilder;
-use Drupal\Core\DrupalKernel;
-use Drupal\Core\Entity\Sql\SqlEntityStorageInterface;
-use Drupal\Core\Extension\ExtensionDiscovery;
-use Drupal\Core\KeyValueStore\KeyValueMemoryFactory;
-use Drupal\Core\Language\Language;
-use Drupal\Core\Site\Settings;
-use Symfony\Component\DependencyInjection\Parameter;
-use Drupal\Core\StreamWrapper\StreamWrapperInterface;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Base class for integration tests.
- *
- * Tests extending this base class can access files and the database, but the
- * entire environment is initially empty. Drupal runs in a minimal mocked
- * environment, comparable to the one in the early installer.
- *
- * The module/hook system is functional and operates on a fixed module list.
- * Additional modules needed in a test may be loaded and added to the fixed
- * module list.
- *
- * @deprecated in Drupal 8.0.x, will be removed before Drupal 8.2.x. Use
- *   \Drupal\KernelTests\KernelTestBase instead.
- *
- * @see \Drupal\simpletest\KernelTestBase::$modules
- * @see \Drupal\simpletest\KernelTestBase::enableModules()
- *
- * @ingroup testing
- */
-abstract class KernelTestBase extends TestBase {
-
-  use AssertContentTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * Test classes extending this class, and any classes in the hierarchy up to
-   * this class, may specify individual lists of modules to enable by setting
-   * this property. The values of all properties in all classes in the hierarchy
-   * are merged.
-   *
-   * Any modules specified in the $modules property are automatically loaded and
-   * set as the fixed module list.
-   *
-   * Unlike WebTestBase::setUp(), the specified modules are loaded only, but not
-   * automatically installed. Modules need to be installed manually, if needed.
-   *
-   * @see \Drupal\simpletest\KernelTestBase::enableModules()
-   * @see \Drupal\simpletest\KernelTestBase::setUp()
-   *
-   * @var array
-   */
-  public static $modules = array();
-
-  private $moduleFiles;
-  private $themeFiles;
-
-  /**
-   * The configuration directories for this test run.
-   *
-   * @var array
-   */
-  protected $configDirectories = array();
-
-  /**
-   * A KeyValueMemoryFactory instance to use when building the container.
-   *
-   * @var \Drupal\Core\KeyValueStore\KeyValueMemoryFactory.
-   */
-  protected $keyValueFactory;
-
-  /**
-   * Array of registered stream wrappers.
-   *
-   * @var array
-   */
-  protected $streamWrappers = array();
-
-  /**
-   * {@inheritdoc}
-   */
-  function __construct($test_id = NULL) {
-    parent::__construct($test_id);
-    $this->skipClasses[__CLASS__] = TRUE;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function beforePrepareEnvironment() {
-    // Copy/prime extension file lists once to avoid filesystem scans.
-    if (!isset($this->moduleFiles)) {
-      $this->moduleFiles = \Drupal::state()->get('system.module.files') ?: array();
-      $this->themeFiles = \Drupal::state()->get('system.theme.files') ?: array();
-    }
-  }
-
-  /**
-   * Create and set new configuration directories.
-   *
-   * @see config_get_config_directory()
-   *
-   * @throws \RuntimeException
-   *   Thrown when CONFIG_SYNC_DIRECTORY cannot be created or made writable.
-   */
-  protected function prepareConfigDirectories() {
-    $this->configDirectories = array();
-    include_once DRUPAL_ROOT . '/core/includes/install.inc';
-    // Assign the relative path to the global variable.
-    $path = $this->siteDirectory . '/config_' . CONFIG_SYNC_DIRECTORY;
-    $GLOBALS['config_directories'][CONFIG_SYNC_DIRECTORY] = $path;
-    // Ensure the directory can be created and is writeable.
-    if (!install_ensure_config_directory(CONFIG_SYNC_DIRECTORY)) {
-      throw new \RuntimeException("Failed to create '" . CONFIG_SYNC_DIRECTORY . "' config directory $path");
-    }
-    // Provide the already resolved path for tests.
-    $this->configDirectories[CONFIG_SYNC_DIRECTORY] = $path;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    $this->keyValueFactory = new KeyValueMemoryFactory();
-
-    // Back up settings from TestBase::prepareEnvironment().
-    $settings = Settings::getAll();
-
-    // Allow for test-specific overrides.
-    $directory = DRUPAL_ROOT . '/' . $this->siteDirectory;
-    $settings_services_file = DRUPAL_ROOT . '/' . $this->originalSite . '/testing.services.yml';
-    $container_yamls = [];
-    if (file_exists($settings_services_file)) {
-      // Copy the testing-specific service overrides in place.
-      $testing_services_file = $directory . '/services.yml';
-      copy($settings_services_file, $testing_services_file);
-      $container_yamls[] = $testing_services_file;
-    }
-    $settings_testing_file = DRUPAL_ROOT . '/' . $this->originalSite . '/settings.testing.php';
-    if (file_exists($settings_testing_file)) {
-      // Copy the testing-specific settings.php overrides in place.
-      copy($settings_testing_file, $directory . '/settings.testing.php');
-    }
-
-    if (file_exists($directory . '/settings.testing.php')) {
-      // Add the name of the testing class to settings.php and include the
-      // testing specific overrides
-      $hash_salt = Settings::getHashSalt();
-      $test_class = get_class($this);
-      $container_yamls_export = Variable::export($container_yamls);
-      $php = <<<EOD
-<?php
-
-\$settings['hash_salt'] = '$hash_salt';
-\$settings['container_yamls'] = $container_yamls_export;
-
-\$test_class = '$test_class';
-include DRUPAL_ROOT . '/' . \$site_path . '/settings.testing.php';
-EOD;
-      file_put_contents($directory . '/settings.php', $php);
-    }
-
-    // Add this test class as a service provider.
-    // @todo Remove the indirection; implement ServiceProviderInterface instead.
-    $GLOBALS['conf']['container_service_providers']['TestServiceProvider'] = 'Drupal\simpletest\TestServiceProvider';
-
-    // Bootstrap a new kernel.
-    $class_loader = require DRUPAL_ROOT . '/autoload.php';
-    $this->kernel = new DrupalKernel('testing', $class_loader, FALSE);
-    $request = Request::create('/');
-    $site_path = DrupalKernel::findSitePath($request);
-    $this->kernel->setSitePath($site_path);
-    if (file_exists($directory . '/settings.testing.php')) {
-      Settings::initialize(DRUPAL_ROOT, $site_path, $class_loader);
-    }
-    $this->kernel->boot();
-
-    // Ensure database install tasks have been run.
-    require_once __DIR__ . '/../../../includes/install.inc';
-    $connection = Database::getConnection();
-    $errors = db_installer_object($connection->driver())->runTasks();
-    if (!empty($errors)) {
-      $this->fail('Failed to run installer database tasks: ' . implode(', ', $errors));
-    }
-
-    // Reboot the kernel because the container might contain a connection to the
-    // database that has been closed during the database install tasks. This
-    // prevents any services created during the first boot from having stale
-    // database connections, for example, \Drupal\Core\Config\DatabaseStorage.
-    $this->kernel->shutdown();
-    $this->kernel->boot();
-
-
-    // Save the original site directory path, so that extensions in the
-    // site-specific directory can still be discovered in the test site
-    // environment.
-    // @see \Drupal\Core\Extension\ExtensionDiscovery::scan()
-    $settings['test_parent_site'] = $this->originalSite;
-
-    // Restore and merge settings.
-    // DrupalKernel::boot() initializes new Settings, and the containerBuild()
-    // method sets additional settings.
-    new Settings($settings + Settings::getAll());
-
-    // Create and set new configuration directories.
-    $this->prepareConfigDirectories();
-
-    // Set the request scope.
-    $this->container = $this->kernel->getContainer();
-    $this->container->get('request_stack')->push($request);
-
-    // Re-inject extension file listings into state, unless the key/value
-    // service was overridden (in which case its storage does not exist yet).
-    if ($this->container->get('keyvalue') instanceof KeyValueMemoryFactory) {
-      $this->container->get('state')->set('system.module.files', $this->moduleFiles);
-      $this->container->get('state')->set('system.theme.files', $this->themeFiles);
-    }
-
-    // Create a minimal core.extension configuration object so that the list of
-    // enabled modules can be maintained allowing
-    // \Drupal\Core\Config\ConfigInstaller::installDefaultConfig() to work.
-    // Write directly to active storage to avoid early instantiation of
-    // the event dispatcher which can prevent modules from registering events.
-    \Drupal::service('config.storage')->write('core.extension', array('module' => array(), 'theme' => array()));
-
-    // Collect and set a fixed module list.
-    $class = get_class($this);
-    $modules = array();
-    while ($class) {
-      if (property_exists($class, 'modules')) {
-        // Only add the modules, if the $modules property was not inherited.
-        $rp = new \ReflectionProperty($class, 'modules');
-        if ($rp->class == $class) {
-          $modules[$class] = $class::$modules;
-        }
-      }
-      $class = get_parent_class($class);
-    }
-    // Modules have been collected in reverse class hierarchy order; modules
-    // defined by base classes should be sorted first. Then, merge the results
-    // together.
-    $modules = array_reverse($modules);
-    $modules = call_user_func_array('array_merge_recursive', $modules);
-    if ($modules) {
-      $this->enableModules($modules);
-    }
-
-    // Tests based on this class are entitled to use Drupal's File and
-    // StreamWrapper APIs.
-    // @todo Move StreamWrapper management into DrupalKernel.
-    // @see https://www.drupal.org/node/2028109
-    file_prepare_directory($this->publicFilesDirectory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
-    $this->settingsSet('file_public_path', $this->publicFilesDirectory);
-    $this->streamWrappers = array();
-    $this->registerStreamWrapper('public', 'Drupal\Core\StreamWrapper\PublicStream');
-    // The temporary stream wrapper is able to operate both with and without
-    // configuration.
-    $this->registerStreamWrapper('temporary', 'Drupal\Core\StreamWrapper\TemporaryStream');
-
-    // Manually configure the test mail collector implementation to prevent
-    // tests from sending out emails and collect them in state instead.
-    // While this should be enforced via settings.php prior to installation,
-    // some tests expect to be able to test mail system implementations.
-    $GLOBALS['config']['system.mail']['interface']['default'] = 'test_mail_collector';
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function tearDown() {
-    if ($this->kernel instanceof DrupalKernel) {
-      $this->kernel->shutdown();
-    }
-    // Before tearing down the test environment, ensure that no stream wrapper
-    // of this test leaks into the parent environment. Unlike all other global
-    // state variables in Drupal, stream wrappers are a global state construct
-    // of PHP core, which has to be maintained manually.
-    // @todo Move StreamWrapper management into DrupalKernel.
-    // @see https://www.drupal.org/node/2028109
-    foreach ($this->streamWrappers as $scheme => $type) {
-      $this->unregisterStreamWrapper($scheme, $type);
-    }
-    parent::tearDown();
-  }
-
-  /**
-   * Sets up the base service container for this test.
-   *
-   * Extend this method in your test to register additional service overrides
-   * that need to persist a DrupalKernel reboot. This method is called whenever
-   * the kernel is rebuilt.
-   *
-   * @see \Drupal\simpletest\KernelTestBase::setUp()
-   * @see \Drupal\simpletest\KernelTestBase::enableModules()
-   * @see \Drupal\simpletest\KernelTestBase::disableModules()
-   */
-  public function containerBuild(ContainerBuilder $container) {
-    // Keep the container object around for tests.
-    $this->container = $container;
-
-    // Set the default language on the minimal container.
-    $this->container->setParameter('language.default_values', $this->defaultLanguageData());
-
-    $container->register('lock', 'Drupal\Core\Lock\NullLockBackend');
-    $container->register('cache_factory', 'Drupal\Core\Cache\MemoryBackendFactory');
-
-    $container
-      ->register('config.storage', 'Drupal\Core\Config\DatabaseStorage')
-      ->addArgument(Database::getConnection())
-      ->addArgument('config');
-
-    if ($this->strictConfigSchema) {
-      $container
-        ->register('simpletest.config_schema_checker', 'Drupal\Core\Config\Testing\ConfigSchemaChecker')
-        ->addArgument(new Reference('config.typed'))
-        ->addArgument($this->getConfigSchemaExclusions())
-        ->addTag('event_subscriber');
-    }
-
-    $keyvalue_options = $container->getParameter('factory.keyvalue') ?: array();
-    $keyvalue_options['default'] = 'keyvalue.memory';
-    $container->setParameter('factory.keyvalue', $keyvalue_options);
-    $container->set('keyvalue.memory', $this->keyValueFactory);
-    if (!$container->has('keyvalue')) {
-      // TestBase::setUp puts a completely empty container in
-      // $this->container which is somewhat the mirror of the empty
-      // environment being set up. Unit tests need not to waste time with
-      // getting a container set up for them. Drupal Unit Tests might just get
-      // away with a simple container holding the absolute bare minimum. When
-      // a kernel is overridden then there's no need to re-register the keyvalue
-      // service but when a test is happy with the superminimal container put
-      // together here, it still might a keyvalue storage for anything using
-      // \Drupal::state() -- that's why a memory service was added in the first
-      // place.
-      $container->register('settings', 'Drupal\Core\Site\Settings')
-        ->setFactoryClass('Drupal\Core\Site\Settings')
-        ->setFactoryMethod('getInstance');
-
-      $container
-        ->register('keyvalue', 'Drupal\Core\KeyValueStore\KeyValueFactory')
-        ->addArgument(new Reference('service_container'))
-        ->addArgument(new Parameter('factory.keyvalue'));
-
-      $container->register('state', 'Drupal\Core\State\State')
-        ->addArgument(new Reference('keyvalue'));
-    }
-
-    if ($container->hasDefinition('path_processor_alias')) {
-      // Prevent the alias-based path processor, which requires a url_alias db
-      // table, from being registered to the path processor manager. We do this
-      // by removing the tags that the compiler pass looks for. This means the
-      // url generator can safely be used within tests.
-      $definition = $container->getDefinition('path_processor_alias');
-      $definition->clearTag('path_processor_inbound')->clearTag('path_processor_outbound');
-    }
-
-    if ($container->hasDefinition('password')) {
-      $container->getDefinition('password')->setArguments(array(1));
-    }
-
-    // Register the stream wrapper manager.
-    $container
-      ->register('stream_wrapper_manager', 'Drupal\Core\StreamWrapper\StreamWrapperManager')
-      ->addArgument(new Reference('module_handler'))
-      ->addMethodCall('setContainer', array(new Reference('service_container')));
-
-    $request = Request::create('/');
-    $container->get('request_stack')->push($request);
-  }
-
-  /**
-   * Provides the data for setting the default language on the container.
-   *
-   * @return array
-   *   The data array for the default language.
-   */
-  protected function defaultLanguageData() {
-    return Language::$defaultValues;
-  }
-
-  /**
-   * Installs default configuration for a given list of modules.
-   *
-   * @param array $modules
-   *   A list of modules for which to install default configuration.
-   *
-   * @throws \RuntimeException
-   *   Thrown when any module listed in $modules is not enabled.
-   */
-  protected function installConfig(array $modules) {
-    foreach ($modules as $module) {
-      if (!$this->container->get('module_handler')->moduleExists($module)) {
-        throw new \RuntimeException("'$module' module is not enabled");
-      }
-      \Drupal::service('config.installer')->installDefaultConfig('module', $module);
-    }
-    $this->pass(format_string('Installed default config: %modules.', array(
-      '%modules' => implode(', ', $modules),
-    )));
-  }
-
-  /**
-   * Installs a specific table from a module schema definition.
-   *
-   * @param string $module
-   *   The name of the module that defines the table's schema.
-   * @param string|array $tables
-   *   The name or an array of the names of the tables to install.
-   *
-   * @throws \RuntimeException
-   *   Thrown when $module is not enabled or when the table schema cannot be
-   *   found in the module specified.
-   */
-  protected function installSchema($module, $tables) {
-    // drupal_get_module_schema() is technically able to install a schema
-    // of a non-enabled module, but its ability to load the module's .install
-    // file depends on many other factors. To prevent differences in test
-    // behavior and non-reproducible test failures, we only allow the schema of
-    // explicitly loaded/enabled modules to be installed.
-    if (!$this->container->get('module_handler')->moduleExists($module)) {
-      throw new \RuntimeException("'$module' module is not enabled");
-    }
-
-    $tables = (array) $tables;
-    foreach ($tables as $table) {
-      $schema = drupal_get_module_schema($module, $table);
-      if (empty($schema)) {
-        // BC layer to avoid some contrib tests to fail.
-        // @todo Remove the BC layer before 8.1.x release.
-        // @see https://www.drupal.org/node/2670360
-        // @see https://www.drupal.org/node/2670454
-        if ($module == 'system') {
-          continue;
-        }
-        throw new \RuntimeException("Unknown '$table' table schema in '$module' module.");
-      }
-      $this->container->get('database')->schema()->createTable($table, $schema);
-    }
-    $this->pass(format_string('Installed %module tables: %tables.', array(
-      '%tables' => '{' . implode('}, {', $tables) . '}',
-      '%module' => $module,
-    )));
-  }
-
-
-
-  /**
-   * Installs the storage schema for a specific entity type.
-   *
-   * @param string $entity_type_id
-   *   The ID of the entity type.
-   */
-  protected function installEntitySchema($entity_type_id) {
-    /** @var \Drupal\Core\Entity\EntityManagerInterface $entity_manager */
-    $entity_manager = $this->container->get('entity.manager');
-    $entity_type = $entity_manager->getDefinition($entity_type_id);
-    $entity_manager->onEntityTypeCreate($entity_type);
-
-    // For test runs, the most common storage backend is a SQL database. For
-    // this case, ensure the tables got created.
-    $storage = $entity_manager->getStorage($entity_type_id);
-    if ($storage instanceof SqlEntityStorageInterface) {
-      $tables = $storage->getTableMapping()->getTableNames();
-      $db_schema = $this->container->get('database')->schema();
-      $all_tables_exist = TRUE;
-      foreach ($tables as $table) {
-        if (!$db_schema->tableExists($table)) {
-          $this->fail(SafeMarkup::format('Installed entity type table for the %entity_type entity type: %table', array(
-            '%entity_type' => $entity_type_id,
-            '%table' => $table,
-          )));
-          $all_tables_exist = FALSE;
-        }
-      }
-      if ($all_tables_exist) {
-        $this->pass(SafeMarkup::format('Installed entity type tables for the %entity_type entity type: %tables', array(
-          '%entity_type' => $entity_type_id,
-          '%tables' => '{' . implode('}, {', $tables) . '}',
-        )));
-      }
-    }
-  }
-
-  /**
-   * Enables modules for this test.
-   *
-   * To install test modules outside of the testing environment, add
-   * @code
-   * $settings['extension_discovery_scan_tests'] = TRUE;
-   * @endcode
-   * to your settings.php.
-   *
-   * @param array $modules
-   *   A list of modules to enable. Dependencies are not resolved; i.e.,
-   *   multiple modules have to be specified with dependent modules first.
-   *   The new modules are only added to the active module list and loaded.
-   */
-  protected function enableModules(array $modules) {
-    // Perform an ExtensionDiscovery scan as this function may receive a
-    // profile that is not the current profile, and we don't yet have a cached
-    // way to receive inactive profile information.
-    // @todo Remove as part of https://www.drupal.org/node/2186491
-    $listing = new ExtensionDiscovery(\Drupal::root());
-    $module_list = $listing->scan('module');
-    // In ModuleHandlerTest we pass in a profile as if it were a module.
-    $module_list += $listing->scan('profile');
-    // Set the list of modules in the extension handler.
-    $module_handler = $this->container->get('module_handler');
-
-    // Write directly to active storage to avoid early instantiation of
-    // the event dispatcher which can prevent modules from registering events.
-    $active_storage = \Drupal::service('config.storage');
-    $extensions = $active_storage->read('core.extension');
-
-    foreach ($modules as $module) {
-      $module_handler->addModule($module, $module_list[$module]->getPath());
-      // Maintain the list of enabled modules in configuration.
-      $extensions['module'][$module] = 0;
-    }
-    $active_storage->write('core.extension', $extensions);
-
-    // Update the kernel to make their services available.
-    $module_filenames = $module_handler->getModuleList();
-    $this->kernel->updateModules($module_filenames, $module_filenames);
-
-    // Ensure isLoaded() is TRUE in order to make
-    // \Drupal\Core\Theme\ThemeManagerInterface::render() work.
-    // Note that the kernel has rebuilt the container; this $module_handler is
-    // no longer the $module_handler instance from above.
-    $this->container->get('module_handler')->reload();
-    $this->pass(format_string('Enabled modules: %modules.', array(
-      '%modules' => implode(', ', $modules),
-    )));
-  }
-
-  /**
-   * Disables modules for this test.
-   *
-   * @param array $modules
-   *   A list of modules to disable. Dependencies are not resolved; i.e.,
-   *   multiple modules have to be specified with dependent modules first.
-   *   Code of previously active modules is still loaded. The modules are only
-   *   removed from the active module list.
-   */
-  protected function disableModules(array $modules) {
-    // Unset the list of modules in the extension handler.
-    $module_handler = $this->container->get('module_handler');
-    $module_filenames = $module_handler->getModuleList();
-    $extension_config = $this->config('core.extension');
-    foreach ($modules as $module) {
-      unset($module_filenames[$module]);
-      $extension_config->clear('module.' . $module);
-    }
-    $extension_config->save();
-    $module_handler->setModuleList($module_filenames);
-    $module_handler->resetImplementations();
-    // Update the kernel to remove their services.
-    $this->kernel->updateModules($module_filenames, $module_filenames);
-
-    // Ensure isLoaded() is TRUE in order to make
-    // \Drupal\Core\Theme\ThemeManagerInterface::render() work.
-    // Note that the kernel has rebuilt the container; this $module_handler is
-    // no longer the $module_handler instance from above.
-    $module_handler = $this->container->get('module_handler');
-    $module_handler->reload();
-    $this->pass(format_string('Disabled modules: %modules.', array(
-      '%modules' => implode(', ', $modules),
-    )));
-  }
-
-  /**
-   * Registers a stream wrapper for this test.
-   *
-   * @param string $scheme
-   *   The scheme to register.
-   * @param string $class
-   *   The fully qualified class name to register.
-   * @param int $type
-   *   The Drupal Stream Wrapper API type. Defaults to
-   *   StreamWrapperInterface::NORMAL.
-   */
-  protected function registerStreamWrapper($scheme, $class, $type = StreamWrapperInterface::NORMAL) {
-    $this->container->get('stream_wrapper_manager')->registerWrapper($scheme, $class, $type);
-  }
-
-  /**
-   * Renders a render array.
-   *
-   * @param array $elements
-   *   The elements to render.
-   *
-   * @return string
-   *   The rendered string output (typically HTML).
-   */
-  protected function render(array &$elements) {
-    // Use the bare HTML page renderer to render our links.
-    $renderer = $this->container->get('bare_html_page_renderer');
-    $response = $renderer->renderBarePage($elements, '', 'maintenance_page');
-
-    // Glean the content from the response object.
-    $content = $response->getContent();
-    $this->setRawContent($content);
-    $this->verbose('<pre style="white-space: pre-wrap">' . Html::escape($content));
-    return $content;
-  }
-
-}
diff --git a/core/modules/simpletest/src/Tests/KernelTestBaseTest.php b/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
deleted file mode 100644
index 15ecf1f..0000000
--- a/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
+++ /dev/null
@@ -1,370 +0,0 @@
-<?php
-
-namespace Drupal\simpletest\Tests;
-
-use Drupal\Core\Database\Database;
-use Drupal\field\Entity\FieldConfig;
-use Drupal\simpletest\KernelTestBase;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\Core\Entity\Entity\EntityViewDisplay;
-
-/**
- * Tests KernelTestBase functionality.
- *
- * @group simpletest
- */
-class KernelTestBaseTest extends KernelTestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = array('entity_test');
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    $php = <<<'EOS'
-<?php
-# Make sure that the $test_class variable is defined when this file is included.
-if ($test_class) {
-}
-
-# Define a function to be able to check that this file was loaded with
-# function_exists().
-if (!function_exists('simpletest_test_stub_settings_function')) {
-  function simpletest_test_stub_settings_function() {}
-}
-EOS;
-
-    $settings_testing_file = $this->siteDirectory . '/settings.testing.php';
-    file_put_contents($settings_testing_file, $php);
-
-    $original_container = $this->originalContainer;
-    parent::setUp();
-    $this->assertNotIdentical(\Drupal::getContainer(), $original_container, 'KernelTestBase test creates a new container.');
-  }
-
-  /**
-   * Tests expected behavior of setUp().
-   */
-  function testSetUp() {
-    $modules = array('entity_test');
-    $table = 'entity_test';
-
-    // Verify that specified $modules have been loaded.
-    $this->assertTrue(function_exists('entity_test_entity_bundle_info'), 'entity_test.module was loaded.');
-    // Verify that there is a fixed module list.
-    $this->assertIdentical(array_keys(\Drupal::moduleHandler()->getModuleList()), $modules);
-    $this->assertIdentical(\Drupal::moduleHandler()->getImplementations('entity_bundle_info'), ['entity_test']);
-    $this->assertIdentical(\Drupal::moduleHandler()->getImplementations('entity_type_alter'), ['entity_test']);
-
-    // Verify that no modules have been installed.
-    $this->assertFalse(db_table_exists($table), "'$table' database table not found.");
-
-    // Verify that the settings.testing.php got taken into account.
-    $this->assertTrue(function_exists('simpletest_test_stub_settings_function'));
-
-    // Ensure that the database tasks have been run during set up. Neither MySQL
-    // nor SQLite make changes that are testable.
-    $database = $this->container->get('database');
-    if ($database->driver() == 'pgsql') {
-      $this->assertEqual('on', $database->query("SHOW standard_conforming_strings")->fetchField());
-      $this->assertEqual('escape', $database->query("SHOW bytea_output")->fetchField());
-    }
-  }
-
-  /**
-   * Tests expected load behavior of enableModules().
-   */
-  function testEnableModulesLoad() {
-    $module = 'field_test';
-
-    // Verify that the module does not exist yet.
-    $this->assertFalse(\Drupal::moduleHandler()->moduleExists($module), "$module module not found.");
-    $list = array_keys(\Drupal::moduleHandler()->getModuleList());
-    $this->assertFalse(in_array($module, $list), "$module module not found in the extension handler's module list.");
-    $list = \Drupal::moduleHandler()->getImplementations('entity_display_build_alter');
-    $this->assertFalse(in_array($module, $list), "{$module}_entity_display_build_alter() in \Drupal::moduleHandler()->getImplementations() not found.");
-
-    // Enable the module.
-    $this->enableModules(array($module));
-
-    // Verify that the module exists.
-    $this->assertTrue(\Drupal::moduleHandler()->moduleExists($module), "$module module found.");
-    $list = array_keys(\Drupal::moduleHandler()->getModuleList());
-    $this->assertTrue(in_array($module, $list), "$module module found in the extension handler's module list.");
-    $list = \Drupal::moduleHandler()->getImplementations('query_efq_table_prefixing_test_alter');
-    $this->assertTrue(in_array($module, $list), "{$module}_query_efq_table_prefixing_test_alter() in \Drupal::moduleHandler()->getImplementations() found.");
-  }
-
-  /**
-   * Tests expected installation behavior of enableModules().
-   */
-  function testEnableModulesInstall() {
-    $module = 'module_test';
-    $table = 'module_test';
-
-    // Verify that the module does not exist yet.
-    $this->assertFalse(\Drupal::moduleHandler()->moduleExists($module), "$module module not found.");
-    $list = array_keys(\Drupal::moduleHandler()->getModuleList());
-    $this->assertFalse(in_array($module, $list), "$module module not found in the extension handler's module list.");
-    $list = \Drupal::moduleHandler()->getImplementations('hook_info');
-    $this->assertFalse(in_array($module, $list), "{$module}_hook_info() in \Drupal::moduleHandler()->getImplementations() not found.");
-
-    $this->assertFalse(db_table_exists($table), "'$table' database table not found.");
-
-    // Install the module.
-    \Drupal::service('module_installer')->install(array($module));
-
-    // Verify that the enabled module exists.
-    $this->assertTrue(\Drupal::moduleHandler()->moduleExists($module), "$module module found.");
-    $list = array_keys(\Drupal::moduleHandler()->getModuleList());
-    $this->assertTrue(in_array($module, $list), "$module module found in the extension handler's module list.");
-    $list = \Drupal::moduleHandler()->getImplementations('hook_info');
-    $this->assertTrue(in_array($module, $list), "{$module}_hook_info() in \Drupal::moduleHandler()->getImplementations() found.");
-
-    $this->assertTrue(db_table_exists($table), "'$table' database table found.");
-    $schema = drupal_get_module_schema($module, $table);
-    $this->assertTrue($schema, "'$table' table schema found.");
-  }
-
-  /**
-   * Tests installing modules with DependencyInjection services.
-   */
-  function testEnableModulesInstallContainer() {
-    // Install Node module.
-    $this->enableModules(array('user', 'field', 'node'));
-
-    $this->installEntitySchema('node', array('node', 'node_field_data'));
-    // Perform an entity query against node.
-    $query = \Drupal::entityQuery('node');
-    // Disable node access checks, since User module is not enabled.
-    $query->accessCheck(FALSE);
-    $query->condition('nid', 1);
-    $query->execute();
-    $this->pass('Entity field query was executed.');
-  }
-
-  /**
-   * Tests expected behavior of installSchema().
-   */
-  function testInstallSchema() {
-    $module = 'entity_test';
-    $table = 'entity_test_example';
-    // Verify that we can install a table from the module schema.
-    $this->installSchema($module, $table);
-    $this->assertTrue(db_table_exists($table), "'$table' database table found.");
-
-    // Verify that the schema is known to Schema API.
-    $schema = drupal_get_module_schema($module, $table);
-    $this->assertTrue($schema, "'$table' table schema found.");
-
-    // Verify that a unknown table from an enabled module throws an error.
-    $table = 'unknown_entity_test_table';
-    try {
-      $this->installSchema($module, $table);
-      $this->fail('Exception for non-retrievable schema found.');
-    }
-    catch (\Exception $e) {
-      $this->pass('Exception for non-retrievable schema found.');
-    }
-    $this->assertFalse(db_table_exists($table), "'$table' database table not found.");
-    $schema = drupal_get_module_schema($module, $table);
-    $this->assertFalse($schema, "'$table' table schema not found.");
-
-    // Verify that a table from a unknown module cannot be installed.
-    $module = 'database_test';
-    $table = 'test';
-    try {
-      $this->installSchema($module, $table);
-      $this->fail('Exception for non-retrievable schema found.');
-    }
-    catch (\Exception $e) {
-      $this->pass('Exception for non-retrievable schema found.');
-    }
-    $this->assertFalse(db_table_exists($table), "'$table' database table not found.");
-    $schema = drupal_get_module_schema($module, $table);
-    $this->assertTrue($schema, "'$table' table schema found.");
-
-    // Verify that the same table can be installed after enabling the module.
-    $this->enableModules(array($module));
-    $this->installSchema($module, $table);
-    $this->assertTrue(db_table_exists($table), "'$table' database table found.");
-    $schema = drupal_get_module_schema($module, $table);
-    $this->assertTrue($schema, "'$table' table schema found.");
-  }
-
-  /**
-   * Tests expected behavior of installEntitySchema().
-   */
-  function testInstallEntitySchema() {
-    $entity = 'entity_test';
-    // The entity_test Entity has a field that depends on the User module.
-    $this->enableModules(array('user'));
-    // Verity that the entity schema is created properly.
-    $this->installEntitySchema($entity);
-    $this->assertTrue(db_table_exists($entity), "'$entity' database table found.");
-  }
-
-  /**
-   * Tests expected behavior of installConfig().
-   */
-  function testInstallConfig() {
-    // The user module has configuration that depends on system.
-    $this->enableModules(array('system'));
-    $module = 'user';
-
-    // Verify that default config can only be installed for enabled modules.
-    try {
-      $this->installConfig(array($module));
-      $this->fail('Exception for non-enabled module found.');
-    }
-    catch (\Exception $e) {
-      $this->pass('Exception for non-enabled module found.');
-    }
-    $this->assertFalse($this->container->get('config.storage')->exists('user.settings'));
-
-    // Verify that default config can be installed.
-    $this->enableModules(array('user'));
-    $this->installConfig(array('user'));
-    $this->assertTrue($this->container->get('config.storage')->exists('user.settings'));
-    $this->assertTrue($this->config('user.settings')->get('register'));
-  }
-
-  /**
-   * Tests that the module list is retained after enabling/installing/disabling.
-   */
-  function testEnableModulesFixedList() {
-    // Install system module.
-    $this->container->get('module_installer')->install(array('system', 'menu_link_content'));
-    $entity_manager = \Drupal::entityManager();
-
-    // entity_test is loaded via $modules; its entity type should exist.
-    $this->assertEqual($this->container->get('module_handler')->moduleExists('entity_test'), TRUE);
-    $this->assertTrue(TRUE == $entity_manager->getDefinition('entity_test'));
-
-    // Load some additional modules; entity_test should still exist.
-    $this->enableModules(array('field', 'text', 'entity_test'));
-    $this->assertEqual($this->container->get('module_handler')->moduleExists('entity_test'), TRUE);
-    $this->assertTrue(TRUE == $entity_manager->getDefinition('entity_test'));
-
-    // Install some other modules; entity_test should still exist.
-    $this->container->get('module_installer')->install(array('user', 'field', 'field_test'), FALSE);
-    $this->assertEqual($this->container->get('module_handler')->moduleExists('entity_test'), TRUE);
-    $this->assertTrue(TRUE == $entity_manager->getDefinition('entity_test'));
-
-    // Uninstall one of those modules; entity_test should still exist.
-    $this->container->get('module_installer')->uninstall(array('field_test'));
-    $this->assertEqual($this->container->get('module_handler')->moduleExists('entity_test'), TRUE);
-    $this->assertTrue(TRUE == $entity_manager->getDefinition('entity_test'));
-
-    // Set the weight of a module; entity_test should still exist.
-    module_set_weight('field', -1);
-    $this->assertEqual($this->container->get('module_handler')->moduleExists('entity_test'), TRUE);
-    $this->assertTrue(TRUE == $entity_manager->getDefinition('entity_test'));
-
-    // Reactivate the previously uninstalled module.
-    $this->enableModules(array('field_test'));
-
-    // Create a field.
-    $display = EntityViewDisplay::create(array(
-      'targetEntityType' => 'entity_test',
-      'bundle' => 'entity_test',
-      'mode' => 'default',
-    ));
-    $field_storage = FieldStorageConfig::create(array(
-      'field_name' => 'test_field',
-      'entity_type' => 'entity_test',
-      'type' => 'test_field'
-    ));
-    $field_storage->save();
-    FieldConfig::create([
-      'field_storage' => $field_storage,
-      'bundle' => 'entity_test',
-    ])->save();
-  }
-
-  /**
-   * Tests that ThemeManager works right after loading a module.
-   */
-  function testEnableModulesTheme() {
-    /** @var \Drupal\Core\Render\RendererInterface $renderer */
-    $renderer = $this->container->get('renderer');
-    $original_element = $element = array(
-      '#type' => 'container',
-      '#markup' => 'Foo',
-      '#attributes' => array(),
-    );
-    $this->enableModules(array('system'));
-    // \Drupal\Core\Theme\ThemeManager::render() throws an exception if modules
-    // are not loaded yet.
-    $this->assertTrue($renderer->renderRoot($element));
-
-    $element = $original_element;
-    $this->disableModules(array('entity_test'));
-    $this->assertTrue($renderer->renderRoot($element));
-  }
-
-  /**
-   * Tests that there is no theme by default.
-   */
-  function testNoThemeByDefault() {
-    $themes = $this->config('core.extension')->get('theme');
-    $this->assertEqual($themes, array());
-
-    $extensions = $this->container->get('config.storage')->read('core.extension');
-    $this->assertEqual($extensions['theme'], array());
-
-    $active_theme = $this->container->get('theme.manager')->getActiveTheme();
-    $this->assertEqual($active_theme->getName(), 'core');
-  }
-
-  /**
-   * Tests that drupal_get_profile() returns NULL.
-   *
-   * As the currently active installation profile is used when installing
-   * configuration, for example, this is essential to ensure test isolation.
-   */
-  public function testDrupalGetProfile() {
-    $this->assertNull(drupal_get_profile());
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function run(array $methods = array()) {
-    parent::run($methods);
-
-    // Check that all tables of the test instance have been deleted. At this
-    // point the original database connection is restored so we need to prefix
-    // the tables.
-    $connection = Database::getConnection();
-    if ($connection->databaseType() != 'sqlite') {
-      $tables = $connection->schema()->findTables($this->databasePrefix . '%');
-      $this->assertTrue(empty($tables), 'All test tables have been removed.');
-    }
-    else {
-      // We don't have the test instance connection anymore so we have to
-      // re-attach its database and then use the same query as
-      // \Drupal\Core\Database\Driver\sqlite\Schema::findTables().
-      // @see \Drupal\Core\Database\Driver\sqlite\Connection::__construct()
-      $info = Database::getConnectionInfo();
-      $connection->query('ATTACH DATABASE :database AS :prefix', [
-        ':database' => $info['default']['database'] . '-' . $this->databasePrefix,
-        ':prefix' => $this->databasePrefix
-      ]);
-
-      $result = $connection->query("SELECT name FROM " . $this->databasePrefix . ".sqlite_master WHERE type = :type AND name LIKE :table_name AND name NOT LIKE :pattern", array(
-        ':type' => 'table',
-        ':table_name' => '%',
-        ':pattern' => 'sqlite_%',
-      ))->fetchAllKeyed(0, 0);
-
-      $this->assertTrue(empty($result), 'All test tables have been removed.');
-    }
-  }
-
-}
diff --git a/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php b/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php
deleted file mode 100644
index 6c3d98f..0000000
--- a/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php
+++ /dev/null
@@ -1,623 +0,0 @@
-<?php
-
-namespace Drupal\system\Tests\Cache;
-
-use Drupal\Core\Cache\Cache;
-use Drupal\Core\Cache\CacheBackendInterface;
-use Drupal\simpletest\KernelTestBase;
-
-/**
- * Tests any cache backend.
- *
- * Full generic unit test suite for any cache backend. In order to use it for a
- * cache backend implementation, extend this class and override the
- * createBackendInstance() method to return an object.
- *
- * @see DatabaseBackendUnitTestCase
- *   For a full working implementation.
- *
- * @deprecated as of Drupal 8.2.x, will be removed before Drupal 9.0.0. Use
- *    \Drupal\KernelTests\Core\Cache\GenericCacheBackendUnitTestBase instead.
- */
-abstract class GenericCacheBackendUnitTestBase extends KernelTestBase {
-
-  /**
-   * Array of objects implementing Drupal\Core\Cache\CacheBackendInterface.
-   *
-   * @var array
-   */
-  protected $cachebackends;
-
-  /**
-   * Cache bin to use for testing.
-   *
-   * @var string
-   */
-  protected $testBin;
-
-  /**
-   * Random value to use in tests.
-   *
-   * @var string
-   */
-  protected $defaultValue;
-
-  /**
-   * Gets the testing bin.
-   *
-   * Override this method if you want to work on a different bin than the
-   * default one.
-   *
-   * @return string
-   *   Bin name.
-   */
-  protected function getTestBin() {
-    if (!isset($this->testBin)) {
-      $this->testBin = 'page';
-    }
-    return $this->testBin;
-  }
-
-  /**
-   * Creates a cache backend to test.
-   *
-   * Override this method to test a CacheBackend.
-   *
-   * @param string $bin
-   *   Bin name to use for this backend instance.
-   *
-   * @return \Drupal\Core\Cache\CacheBackendInterface
-   *   Cache backend to test.
-   */
-  protected abstract function createCacheBackend($bin);
-
-  /**
-   * Allows specific implementation to change the environment before a test run.
-   */
-  public function setUpCacheBackend() {
-  }
-
-  /**
-   * Allows alteration of environment after a test run but before tear down.
-   *
-   * Used before the real tear down because the tear down will change things
-   * such as the database prefix.
-   */
-  public function tearDownCacheBackend() {
-  }
-
-  /**
-   * Gets a backend to test; this will get a shared instance set in the object.
-   *
-   * @return \Drupal\Core\Cache\CacheBackendInterface
-   *   Cache backend to test.
-   */
-  protected function getCacheBackend($bin = NULL) {
-    if (!isset($bin)) {
-      $bin = $this->getTestBin();
-    }
-    if (!isset($this->cachebackends[$bin])) {
-      $this->cachebackends[$bin] = $this->createCacheBackend($bin);
-      // Ensure the backend is empty.
-      $this->cachebackends[$bin]->deleteAll();
-    }
-    return $this->cachebackends[$bin];
-  }
-
-  protected function setUp() {
-    $this->cachebackends = array();
-    $this->defaultValue = $this->randomMachineName(10);
-
-    parent::setUp();
-
-    $this->setUpCacheBackend();
-  }
-
-  protected function tearDown() {
-    // Destruct the registered backend, each test will get a fresh instance,
-    // properly emptying it here ensure that on persistent data backends they
-    // will come up empty the next test.
-    foreach ($this->cachebackends as $bin => $cachebackend) {
-      $this->cachebackends[$bin]->deleteAll();
-    }
-    unset($this->cachebackends);
-
-    $this->tearDownCacheBackend();
-
-    parent::tearDown();
-  }
-
-  /**
-   * Tests the get and set methods of Drupal\Core\Cache\CacheBackendInterface.
-   */
-  public function testSetGet() {
-    $backend = $this->getCacheBackend();
-
-    $this->assertIdentical(FALSE, $backend->get('test1'), "Backend does not contain data for cache id test1.");
-    $with_backslash = array('foo' => '\Drupal\foo\Bar');
-    $backend->set('test1', $with_backslash);
-    $cached = $backend->get('test1');
-    $this->assert(is_object($cached), "Backend returned an object for cache id test1.");
-    $this->assertIdentical($with_backslash, $cached->data);
-    $this->assertTrue($cached->valid, 'Item is marked as valid.');
-    // We need to round because microtime may be rounded up in the backend.
-    $this->assertTrue($cached->created >= REQUEST_TIME && $cached->created <= round(microtime(TRUE), 3), 'Created time is correct.');
-    $this->assertEqual($cached->expire, Cache::PERMANENT, 'Expire time is correct.');
-
-    $this->assertIdentical(FALSE, $backend->get('test2'), "Backend does not contain data for cache id test2.");
-    $backend->set('test2', array('value' => 3), REQUEST_TIME + 3);
-    $cached = $backend->get('test2');
-    $this->assert(is_object($cached), "Backend returned an object for cache id test2.");
-    $this->assertIdentical(array('value' => 3), $cached->data);
-    $this->assertTrue($cached->valid, 'Item is marked as valid.');
-    $this->assertTrue($cached->created >= REQUEST_TIME && $cached->created <= round(microtime(TRUE), 3), 'Created time is correct.');
-    $this->assertEqual($cached->expire, REQUEST_TIME + 3, 'Expire time is correct.');
-
-    $backend->set('test3', 'foobar', REQUEST_TIME - 3);
-    $this->assertFalse($backend->get('test3'), 'Invalid item not returned.');
-    $cached = $backend->get('test3', TRUE);
-    $this->assert(is_object($cached), 'Backend returned an object for cache id test3.');
-    $this->assertFalse($cached->valid, 'Item is marked as valid.');
-    $this->assertTrue($cached->created >= REQUEST_TIME && $cached->created <= round(microtime(TRUE), 3), 'Created time is correct.');
-    $this->assertEqual($cached->expire, REQUEST_TIME - 3, 'Expire time is correct.');
-
-    $this->assertIdentical(FALSE, $backend->get('test4'), "Backend does not contain data for cache id test4.");
-    $with_eof = array('foo' => "\nEOF\ndata");
-    $backend->set('test4', $with_eof);
-    $cached = $backend->get('test4');
-    $this->assert(is_object($cached), "Backend returned an object for cache id test4.");
-    $this->assertIdentical($with_eof, $cached->data);
-    $this->assertTrue($cached->valid, 'Item is marked as valid.');
-    $this->assertTrue($cached->created >= REQUEST_TIME && $cached->created <= round(microtime(TRUE), 3), 'Created time is correct.');
-    $this->assertEqual($cached->expire, Cache::PERMANENT, 'Expire time is correct.');
-
-    $this->assertIdentical(FALSE, $backend->get('test5'), "Backend does not contain data for cache id test5.");
-    $with_eof_and_semicolon = array('foo' => "\nEOF;\ndata");
-    $backend->set('test5', $with_eof_and_semicolon);
-    $cached = $backend->get('test5');
-    $this->assert(is_object($cached), "Backend returned an object for cache id test5.");
-    $this->assertIdentical($with_eof_and_semicolon, $cached->data);
-    $this->assertTrue($cached->valid, 'Item is marked as valid.');
-    $this->assertTrue($cached->created >= REQUEST_TIME && $cached->created <= round(microtime(TRUE), 3), 'Created time is correct.');
-    $this->assertEqual($cached->expire, Cache::PERMANENT, 'Expire time is correct.');
-
-    $with_variable = array('foo' => '$bar');
-    $backend->set('test6', $with_variable);
-    $cached = $backend->get('test6');
-    $this->assert(is_object($cached), "Backend returned an object for cache id test6.");
-    $this->assertIdentical($with_variable, $cached->data);
-
-    // Make sure that a cached object is not affected by changing the original.
-    $data = new \stdClass();
-    $data->value = 1;
-    $data->obj = new \stdClass();
-    $data->obj->value = 2;
-    $backend->set('test7', $data);
-    $expected_data = clone $data;
-    // Add a property to the original. It should not appear in the cached data.
-    $data->this_should_not_be_in_the_cache = TRUE;
-    $cached = $backend->get('test7');
-    $this->assert(is_object($cached), "Backend returned an object for cache id test7.");
-    $this->assertEqual($expected_data, $cached->data);
-    $this->assertFalse(isset($cached->data->this_should_not_be_in_the_cache));
-    // Add a property to the cache data. It should not appear when we fetch
-    // the data from cache again.
-    $cached->data->this_should_not_be_in_the_cache = TRUE;
-    $fresh_cached = $backend->get('test7');
-    $this->assertFalse(isset($fresh_cached->data->this_should_not_be_in_the_cache));
-
-    // Check with a long key.
-    $cid = str_repeat('a', 300);
-    $backend->set($cid, 'test');
-    $this->assertEqual('test', $backend->get($cid)->data);
-
-    // Check that the cache key is case sensitive.
-    $backend->set('TEST8', 'value');
-    $this->assertEqual('value', $backend->get('TEST8')->data);
-    $this->assertFalse($backend->get('test8'));
-
-    // Calling ::set() with invalid cache tags. This should fail an assertion.
-    try {
-      $backend->set('assertion_test', 'value', Cache::PERMANENT, ['node' => [3, 5, 7]]);
-      $this->fail('::set() was called with invalid cache tags, runtime assertion did not fail.');
-    }
-    catch (\AssertionError $e) {
-      $this->pass('::set() was called with invalid cache tags, runtime assertion failed.');
-    }
-  }
-
-  /**
-   * Tests Drupal\Core\Cache\CacheBackendInterface::delete().
-   */
-  public function testDelete() {
-    $backend = $this->getCacheBackend();
-
-    $this->assertIdentical(FALSE, $backend->get('test1'), "Backend does not contain data for cache id test1.");
-    $backend->set('test1', 7);
-    $this->assert(is_object($backend->get('test1')), "Backend returned an object for cache id test1.");
-
-    $this->assertIdentical(FALSE, $backend->get('test2'), "Backend does not contain data for cache id test2.");
-    $backend->set('test2', 3);
-    $this->assert(is_object($backend->get('test2')), "Backend returned an object for cache id %cid.");
-
-    $backend->delete('test1');
-    $this->assertIdentical(FALSE, $backend->get('test1'), "Backend does not contain data for cache id test1 after deletion.");
-
-    $this->assert(is_object($backend->get('test2')), "Backend still has an object for cache id test2.");
-
-    $backend->delete('test2');
-    $this->assertIdentical(FALSE, $backend->get('test2'), "Backend does not contain data for cache id test2 after deletion.");
-
-    $long_cid = str_repeat('a', 300);
-    $backend->set($long_cid, 'test');
-    $backend->delete($long_cid);
-    $this->assertIdentical(FALSE, $backend->get($long_cid), "Backend does not contain data for long cache id after deletion.");
-  }
-
-  /**
-   * Tests data type preservation.
-   */
-  public function testValueTypeIsKept() {
-    $backend = $this->getCacheBackend();
-
-    $variables = array(
-      'test1' => 1,
-      'test2' => '0',
-      'test3' => '',
-      'test4' => 12.64,
-      'test5' => FALSE,
-      'test6' => array(1, 2, 3),
-    );
-
-    // Create cache entries.
-    foreach ($variables as $cid => $data) {
-      $backend->set($cid, $data);
-    }
-
-    // Retrieve and test cache objects.
-    foreach ($variables as $cid => $value) {
-      $object = $backend->get($cid);
-      $this->assert(is_object($object), sprintf("Backend returned an object for cache id %s.", $cid));
-      $this->assertIdentical($value, $object->data, sprintf("Data of cached id %s kept is identical in type and value", $cid));
-    }
-  }
-
-  /**
-   * Tests Drupal\Core\Cache\CacheBackendInterface::getMultiple().
-   */
-  public function testGetMultiple() {
-    $backend = $this->getCacheBackend();
-
-    // Set numerous testing keys.
-    $long_cid = str_repeat('a', 300);
-    $backend->set('test1', 1);
-    $backend->set('test2', 3);
-    $backend->set('test3', 5);
-    $backend->set('test4', 7);
-    $backend->set('test5', 11);
-    $backend->set('test6', 13);
-    $backend->set('test7', 17);
-    $backend->set($long_cid, 300);
-
-    // Mismatch order for harder testing.
-    $reference = array(
-      'test3',
-      'test7',
-      'test21', // Cid does not exist.
-      'test6',
-      'test19', // Cid does not exist until added before second getMultiple().
-      'test2',
-    );
-
-    $cids = $reference;
-    $ret = $backend->getMultiple($cids);
-    // Test return - ensure it contains existing cache ids.
-    $this->assert(isset($ret['test2']), "Existing cache id test2 is set.");
-    $this->assert(isset($ret['test3']), "Existing cache id test3 is set.");
-    $this->assert(isset($ret['test6']), "Existing cache id test6 is set.");
-    $this->assert(isset($ret['test7']), "Existing cache id test7 is set.");
-    // Test return - ensure that objects has expected properties.
-    $this->assertTrue($ret['test2']->valid, 'Item is marked as valid.');
-    $this->assertTrue($ret['test2']->created >= REQUEST_TIME && $ret['test2']->created <= round(microtime(TRUE), 3), 'Created time is correct.');
-    $this->assertEqual($ret['test2']->expire, Cache::PERMANENT, 'Expire time is correct.');
-    // Test return - ensure it does not contain nonexistent cache ids.
-    $this->assertFalse(isset($ret['test19']), "Nonexistent cache id test19 is not set.");
-    $this->assertFalse(isset($ret['test21']), "Nonexistent cache id test21 is not set.");
-    // Test values.
-    $this->assertIdentical($ret['test2']->data, 3, "Existing cache id test2 has the correct value.");
-    $this->assertIdentical($ret['test3']->data, 5, "Existing cache id test3 has the correct value.");
-    $this->assertIdentical($ret['test6']->data, 13, "Existing cache id test6 has the correct value.");
-    $this->assertIdentical($ret['test7']->data, 17, "Existing cache id test7 has the correct value.");
-    // Test $cids array - ensure it contains cache id's that do not exist.
-    $this->assert(in_array('test19', $cids), "Nonexistent cache id test19 is in cids array.");
-    $this->assert(in_array('test21', $cids), "Nonexistent cache id test21 is in cids array.");
-    // Test $cids array - ensure it does not contain cache id's that exist.
-    $this->assertFalse(in_array('test2', $cids), "Existing cache id test2 is not in cids array.");
-    $this->assertFalse(in_array('test3', $cids), "Existing cache id test3 is not in cids array.");
-    $this->assertFalse(in_array('test6', $cids), "Existing cache id test6 is not in cids array.");
-    $this->assertFalse(in_array('test7', $cids), "Existing cache id test7 is not in cids array.");
-
-    // Test a second time after deleting and setting new keys which ensures that
-    // if the backend uses statics it does not cause unexpected results.
-    $backend->delete('test3');
-    $backend->delete('test6');
-    $backend->set('test19', 57);
-
-    $cids = $reference;
-    $ret = $backend->getMultiple($cids);
-    // Test return - ensure it contains existing cache ids.
-    $this->assert(isset($ret['test2']), "Existing cache id test2 is set");
-    $this->assert(isset($ret['test7']), "Existing cache id test7 is set");
-    $this->assert(isset($ret['test19']), "Added cache id test19 is set");
-    // Test return - ensure it does not contain nonexistent cache ids.
-    $this->assertFalse(isset($ret['test3']), "Deleted cache id test3 is not set");
-    $this->assertFalse(isset($ret['test6']), "Deleted cache id test6 is not set");
-    $this->assertFalse(isset($ret['test21']), "Nonexistent cache id test21 is not set");
-    // Test values.
-    $this->assertIdentical($ret['test2']->data, 3, "Existing cache id test2 has the correct value.");
-    $this->assertIdentical($ret['test7']->data, 17, "Existing cache id test7 has the correct value.");
-    $this->assertIdentical($ret['test19']->data, 57, "Added cache id test19 has the correct value.");
-    // Test $cids array - ensure it contains cache id's that do not exist.
-    $this->assert(in_array('test3', $cids), "Deleted cache id test3 is in cids array.");
-    $this->assert(in_array('test6', $cids), "Deleted cache id test6 is in cids array.");
-    $this->assert(in_array('test21', $cids), "Nonexistent cache id test21 is in cids array.");
-    // Test $cids array - ensure it does not contain cache id's that exist.
-    $this->assertFalse(in_array('test2', $cids), "Existing cache id test2 is not in cids array.");
-    $this->assertFalse(in_array('test7', $cids), "Existing cache id test7 is not in cids array.");
-    $this->assertFalse(in_array('test19', $cids), "Added cache id test19 is not in cids array.");
-
-    // Test with a long $cid and non-numeric array key.
-    $cids = array('key:key' => $long_cid);
-    $return = $backend->getMultiple($cids);
-    $this->assertEqual(300, $return[$long_cid]->data);
-    $this->assertTrue(empty($cids));
-  }
-
-  /**
-   * Tests \Drupal\Core\Cache\CacheBackendInterface::setMultiple().
-   */
-  public function testSetMultiple() {
-    $backend = $this->getCacheBackend();
-
-    $future_expiration = REQUEST_TIME + 100;
-
-    // Set multiple testing keys.
-    $backend->set('cid_1', 'Some other value');
-    $items = array(
-      'cid_1' => array('data' => 1),
-      'cid_2' => array('data' => 2),
-      'cid_3' => array('data' => array(1, 2)),
-      'cid_4' => array('data' => 1, 'expire' => $future_expiration),
-      'cid_5' => array('data' => 1, 'tags' => array('test:a', 'test:b')),
-    );
-    $backend->setMultiple($items);
-    $cids = array_keys($items);
-    $cached = $backend->getMultiple($cids);
-
-    $this->assertEqual($cached['cid_1']->data, $items['cid_1']['data'], 'Over-written cache item set correctly.');
-    $this->assertTrue($cached['cid_1']->valid, 'Item is marked as valid.');
-    $this->assertTrue($cached['cid_1']->created >= REQUEST_TIME && $cached['cid_1']->created <= round(microtime(TRUE), 3), 'Created time is correct.');
-    $this->assertEqual($cached['cid_1']->expire, CacheBackendInterface::CACHE_PERMANENT, 'Cache expiration defaults to permanent.');
-
-    $this->assertEqual($cached['cid_2']->data, $items['cid_2']['data'], 'New cache item set correctly.');
-    $this->assertEqual($cached['cid_2']->expire, CacheBackendInterface::CACHE_PERMANENT, 'Cache expiration defaults to permanent.');
-
-    $this->assertEqual($cached['cid_3']->data, $items['cid_3']['data'], 'New cache item with serialized data set correctly.');
-    $this->assertEqual($cached['cid_3']->expire, CacheBackendInterface::CACHE_PERMANENT, 'Cache expiration defaults to permanent.');
-
-    $this->assertEqual($cached['cid_4']->data, $items['cid_4']['data'], 'New cache item set correctly.');
-    $this->assertEqual($cached['cid_4']->expire, $future_expiration, 'Cache expiration has been correctly set.');
-
-    $this->assertEqual($cached['cid_5']->data, $items['cid_5']['data'], 'New cache item set correctly.');
-
-    // Calling ::setMultiple() with invalid cache tags. This should fail an
-    // assertion.
-    try {
-      $items = [
-        'exception_test_1' => array('data' => 1, 'tags' => []),
-        'exception_test_2' => array('data' => 2, 'tags' => ['valid']),
-        'exception_test_3' => array('data' => 3, 'tags' => ['node' => [3, 5, 7]]),
-      ];
-      $backend->setMultiple($items);
-      $this->fail('::setMultiple() was called with invalid cache tags, runtime assertion did not fail.');
-    }
-    catch (\AssertionError $e) {
-      $this->pass('::setMultiple() was called with invalid cache tags, runtime assertion failed.');
-    }
-  }
-
-  /**
-   * Test Drupal\Core\Cache\CacheBackendInterface::delete() and
-   * Drupal\Core\Cache\CacheBackendInterface::deleteMultiple().
-   */
-  public function testDeleteMultiple() {
-    $backend = $this->getCacheBackend();
-
-    // Set numerous testing keys.
-    $backend->set('test1', 1);
-    $backend->set('test2', 3);
-    $backend->set('test3', 5);
-    $backend->set('test4', 7);
-    $backend->set('test5', 11);
-    $backend->set('test6', 13);
-    $backend->set('test7', 17);
-
-    $backend->delete('test1');
-    $backend->delete('test23'); // Nonexistent key should not cause an error.
-    $backend->deleteMultiple(array(
-      'test3',
-      'test5',
-      'test7',
-      'test19', // Nonexistent key should not cause an error.
-      'test21', // Nonexistent key should not cause an error.
-    ));
-
-    // Test if expected keys have been deleted.
-    $this->assertIdentical(FALSE, $backend->get('test1'), "Cache id test1 deleted.");
-    $this->assertIdentical(FALSE, $backend->get('test3'), "Cache id test3 deleted.");
-    $this->assertIdentical(FALSE, $backend->get('test5'), "Cache id test5 deleted.");
-    $this->assertIdentical(FALSE, $backend->get('test7'), "Cache id test7 deleted.");
-
-    // Test if expected keys exist.
-    $this->assertNotIdentical(FALSE, $backend->get('test2'), "Cache id test2 exists.");
-    $this->assertNotIdentical(FALSE, $backend->get('test4'), "Cache id test4 exists.");
-    $this->assertNotIdentical(FALSE, $backend->get('test6'), "Cache id test6 exists.");
-
-    // Test if that expected keys do not exist.
-    $this->assertIdentical(FALSE, $backend->get('test19'), "Cache id test19 does not exist.");
-    $this->assertIdentical(FALSE, $backend->get('test21'), "Cache id test21 does not exist.");
-
-    // Calling deleteMultiple() with an empty array should not cause an error.
-    $this->assertFalse($backend->deleteMultiple(array()));
-  }
-
-  /**
-   * Test Drupal\Core\Cache\CacheBackendInterface::deleteAll().
-   */
-  public function testDeleteAll() {
-    $backend_a = $this->getCacheBackend();
-    $backend_b = $this->getCacheBackend('bootstrap');
-
-    // Set both expiring and permanent keys.
-    $backend_a->set('test1', 1, Cache::PERMANENT);
-    $backend_a->set('test2', 3, time() + 1000);
-    $backend_b->set('test3', 4, Cache::PERMANENT);
-
-    $backend_a->deleteAll();
-
-    $this->assertFalse($backend_a->get('test1'), 'First key has been deleted.');
-    $this->assertFalse($backend_a->get('test2'), 'Second key has been deleted.');
-    $this->assertTrue($backend_b->get('test3'), 'Item in other bin is preserved.');
-  }
-
-  /**
-   * Test Drupal\Core\Cache\CacheBackendInterface::invalidate() and
-   * Drupal\Core\Cache\CacheBackendInterface::invalidateMultiple().
-   */
-  function testInvalidate() {
-    $backend = $this->getCacheBackend();
-    $backend->set('test1', 1);
-    $backend->set('test2', 2);
-    $backend->set('test3', 2);
-    $backend->set('test4', 2);
-
-    $reference = array('test1', 'test2', 'test3', 'test4');
-
-    $cids = $reference;
-    $ret = $backend->getMultiple($cids);
-    $this->assertEqual(count($ret), 4, 'Four items returned.');
-
-    $backend->invalidate('test1');
-    $backend->invalidateMultiple(array('test2', 'test3'));
-
-    $cids = $reference;
-    $ret = $backend->getMultiple($cids);
-    $this->assertEqual(count($ret), 1, 'Only one item element returned.');
-
-    $cids = $reference;
-    $ret = $backend->getMultiple($cids, TRUE);
-    $this->assertEqual(count($ret), 4, 'Four items returned.');
-
-    // Calling invalidateMultiple() with an empty array should not cause an
-    // error.
-    $this->assertFalse($backend->invalidateMultiple(array()));
-  }
-
-  /**
-   * Tests Drupal\Core\Cache\CacheBackendInterface::invalidateTags().
-   */
-  function testInvalidateTags() {
-    $backend = $this->getCacheBackend();
-
-    // Create two cache entries with the same tag and tag value.
-    $backend->set('test_cid_invalidate1', $this->defaultValue, Cache::PERMANENT, array('test_tag:2'));
-    $backend->set('test_cid_invalidate2', $this->defaultValue, Cache::PERMANENT, array('test_tag:2'));
-    $this->assertTrue($backend->get('test_cid_invalidate1') && $backend->get('test_cid_invalidate2'), 'Two cache items were created.');
-
-    // Invalidate test_tag of value 1. This should invalidate both entries.
-    Cache::invalidateTags(array('test_tag:2'));
-    $this->assertFalse($backend->get('test_cid_invalidate1') || $backend->get('test_cid_invalidate2'), 'Two cache items invalidated after invalidating a cache tag.');
-    $this->assertTrue($backend->get('test_cid_invalidate1', TRUE) && $backend->get('test_cid_invalidate2', TRUE), 'Cache items not deleted after invalidating a cache tag.');
-
-    // Create two cache entries with the same tag and an array tag value.
-    $backend->set('test_cid_invalidate1', $this->defaultValue, Cache::PERMANENT, array('test_tag:1'));
-    $backend->set('test_cid_invalidate2', $this->defaultValue, Cache::PERMANENT, array('test_tag:1'));
-    $this->assertTrue($backend->get('test_cid_invalidate1') && $backend->get('test_cid_invalidate2'), 'Two cache items were created.');
-
-    // Invalidate test_tag of value 1. This should invalidate both entries.
-    Cache::invalidateTags(array('test_tag:1'));
-    $this->assertFalse($backend->get('test_cid_invalidate1') || $backend->get('test_cid_invalidate2'), 'Two caches removed after invalidating a cache tag.');
-    $this->assertTrue($backend->get('test_cid_invalidate1', TRUE) && $backend->get('test_cid_invalidate2', TRUE), 'Cache items not deleted after invalidating a cache tag.');
-
-    // Create three cache entries with a mix of tags and tag values.
-    $backend->set('test_cid_invalidate1', $this->defaultValue, Cache::PERMANENT, array('test_tag:1'));
-    $backend->set('test_cid_invalidate2', $this->defaultValue, Cache::PERMANENT, array('test_tag:2'));
-    $backend->set('test_cid_invalidate3', $this->defaultValue, Cache::PERMANENT, array('test_tag_foo:3'));
-    $this->assertTrue($backend->get('test_cid_invalidate1') && $backend->get('test_cid_invalidate2') && $backend->get('test_cid_invalidate3'), 'Three cached items were created.');
-    Cache::invalidateTags(array('test_tag_foo:3'));
-    $this->assertTrue($backend->get('test_cid_invalidate1') && $backend->get('test_cid_invalidate2'), 'Cache items not matching the tag were not invalidated.');
-    $this->assertFalse($backend->get('test_cid_invalidated3'), 'Cached item matching the tag was removed.');
-
-    // Create cache entry in multiple bins. Two cache entries
-    // (test_cid_invalidate1 and test_cid_invalidate2) still exist from previous
-    // tests.
-    $tags = array('test_tag:1', 'test_tag:2', 'test_tag:3');
-    $bins = array('path', 'bootstrap', 'page');
-    foreach ($bins as $bin) {
-      $this->getCacheBackend($bin)->set('test', $this->defaultValue, Cache::PERMANENT, $tags);
-      $this->assertTrue($this->getCacheBackend($bin)->get('test'), 'Cache item was set in bin.');
-    }
-
-    Cache::invalidateTags(array('test_tag:2'));
-
-    // Test that the cache entry has been invalidated in multiple bins.
-    foreach ($bins as $bin) {
-      $this->assertFalse($this->getCacheBackend($bin)->get('test'), 'Tag invalidation affected item in bin.');
-    }
-    // Test that the cache entry with a matching tag has been invalidated.
-    $this->assertFalse($this->getCacheBackend($bin)->get('test_cid_invalidate2'), 'Cache items matching tag were invalidated.');
-    // Test that the cache entry with without a matching tag still exists.
-    $this->assertTrue($this->getCacheBackend($bin)->get('test_cid_invalidate1'), 'Cache items not matching tag were not invalidated.');
-  }
-
-  /**
-   * Test Drupal\Core\Cache\CacheBackendInterface::invalidateAll().
-   */
-  public function testInvalidateAll() {
-    $backend_a = $this->getCacheBackend();
-    $backend_b = $this->getCacheBackend('bootstrap');
-
-    // Set both expiring and permanent keys.
-    $backend_a->set('test1', 1, Cache::PERMANENT);
-    $backend_a->set('test2', 3, time() + 1000);
-    $backend_b->set('test3', 4, Cache::PERMANENT);
-
-    $backend_a->invalidateAll();
-
-    $this->assertFalse($backend_a->get('test1'), 'First key has been invalidated.');
-    $this->assertFalse($backend_a->get('test2'), 'Second key has been invalidated.');
-    $this->assertTrue($backend_b->get('test3'), 'Item in other bin is preserved.');
-    $this->assertTrue($backend_a->get('test1', TRUE), 'First key has not been deleted.');
-    $this->assertTrue($backend_a->get('test2', TRUE), 'Second key has not been deleted.');
-  }
-
-  /**
-   * Tests Drupal\Core\Cache\CacheBackendInterface::removeBin().
-   */
-  public function testRemoveBin() {
-    $backend_a = $this->getCacheBackend();
-    $backend_b = $this->getCacheBackend('bootstrap');
-
-    // Set both expiring and permanent keys.
-    $backend_a->set('test1', 1, Cache::PERMANENT);
-    $backend_a->set('test2', 3, time() + 1000);
-    $backend_b->set('test3', 4, Cache::PERMANENT);
-
-    $backend_a->removeBin();
-
-    $this->assertFalse($backend_a->get('test1'), 'First key has been deleted.');
-    $this->assertFalse($backend_a->get('test2', TRUE), 'Second key has been deleted.');
-    $this->assertTrue($backend_b->get('test3'), 'Item in other bin is preserved.');
-  }
-
-}
diff --git a/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php b/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php
deleted file mode 100644
index 2ec64e8..0000000
--- a/core/modules/system/src/Tests/Entity/EntityUnitTestBase.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-
-namespace Drupal\system\Tests\Entity;
-
-use Drupal\simpletest\KernelTestBase;
-use Drupal\Core\Entity\EntityInterface;
-use Drupal\user\Entity\Role;
-use Drupal\user\Entity\User;
-
-/**
- * Defines an abstract test base for entity unit tests.
- *
- * @deprecated in Drupal 8.1.x, will be removed before Drupal 8.2.x. Use
- *   \Drupal\KernelTests\Core\Entity\EntityKernelTestBase instead.
- */
-abstract class EntityUnitTestBase extends KernelTestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = ['user', 'system', 'field', 'text', 'filter', 'entity_test'];
-
-  /**
-   * The entity manager service.
-   *
-   * @var \Drupal\Core\Entity\EntityManagerInterface
-   */
-  protected $entityManager;
-
-  /**
-   * A list of generated identifiers.
-   *
-   * @var array
-   */
-  protected $generatedIds = array();
-
-  /**
-   * The state service.
-   *
-   * @var \Drupal\Core\State\StateInterface
-   */
-  protected $state;
-
-  protected function setUp() {
-    parent::setUp();
-
-    $this->entityManager = $this->container->get('entity.manager');
-    $this->state = $this->container->get('state');
-
-    $this->installSchema('system', 'sequences');
-
-    $this->installEntitySchema('user');
-    $this->installEntitySchema('entity_test');
-
-    // If the concrete test sub-class installs the Node or Comment modules,
-    // ensure that the node and comment entity schema are created before the
-    // field configurations are installed. This is because the entity tables
-    // need to be created before the body field storage tables. This prevents
-    // trying to create the body field tables twice.
-    $class = get_class($this);
-    while ($class) {
-      if (property_exists($class, 'modules')) {
-        // Only check the modules, if the $modules property was not inherited.
-        $rp = new \ReflectionProperty($class, 'modules');
-        if ($rp->class == $class) {
-          foreach (array_intersect(array('node', 'comment'), $class::$modules) as $module) {
-            $this->installEntitySchema($module);
-          }
-          if (in_array('forum', $class::$modules, TRUE)) {
-            // Forum module is particular about the order that dependencies are
-            // enabled in. The comment, node and taxonomy config and the
-            // taxonomy_term schema need to be installed before the forum config
-            // which in turn needs to be installed before field config.
-            $this->installConfig(['comment', 'node', 'taxonomy']);
-            $this->installEntitySchema('taxonomy_term');
-            $this->installConfig(['forum']);
-          }
-        }
-      }
-      $class = get_parent_class($class);
-    }
-
-    $this->installConfig(array('field'));
-  }
-
-  /**
-   * Creates a user.
-   *
-   * @param array $values
-   *   (optional) The values used to create the entity.
-   * @param array $permissions
-   *   (optional) Array of permission names to assign to user.
-   *
-   * @return \Drupal\user\Entity\User
-   *   The created user entity.
-   */
-  protected function createUser($values = array(), $permissions = array()) {
-    if ($permissions) {
-      // Create a new role and apply permissions to it.
-      $role = Role::create(array(
-        'id' => strtolower($this->randomMachineName(8)),
-        'label' => $this->randomMachineName(8),
-      ));
-      $role->save();
-      user_role_grant_permissions($role->id(), $permissions);
-      $values['roles'][] = $role->id();
-    }
-
-    $account = User::create($values + [
-      'name' => $this->randomMachineName(),
-      'status' => 1,
-    ]);
-    $account->enforceIsNew();
-    $account->save();
-    return $account;
-  }
-
-  /**
-   * Reloads the given entity from the storage and returns it.
-   *
-   * @param \Drupal\Core\Entity\EntityInterface $entity
-   *   The entity to be reloaded.
-   *
-   * @return \Drupal\Core\Entity\EntityInterface
-   *   The reloaded entity.
-   */
-  protected function reloadEntity(EntityInterface $entity) {
-    $controller = $this->entityManager->getStorage($entity->getEntityTypeId());
-    $controller->resetCache(array($entity->id()));
-    return $controller->load($entity->id());
-  }
-
-  /**
-   * Returns the entity_test hook invocation info.
-   *
-   * @return array
-   *   An associative array of arbitrary hook data keyed by hook name.
-   */
-  protected function getHooksInfo() {
-    $key = 'entity_test.hooks';
-    $hooks = $this->state->get($key);
-    $this->state->set($key, array());
-    return $hooks;
-  }
-
-  /**
-   * Installs a module and refreshes services.
-   *
-   * @param string $module
-   *   The module to install.
-   */
-  protected function installModule($module) {
-    $this->enableModules(array($module));
-    $this->refreshServices();
-  }
-
-  /**
-   * Uninstalls a module and refreshes services.
-   *
-   * @param string $module
-   *   The module to uninstall.
-   */
-  protected function uninstallModule($module) {
-    $this->disableModules(array($module));
-    $this->refreshServices();
-  }
-
-  /**
-   * Refresh services.
-   */
-  protected function refreshServices() {
-    $this->container = \Drupal::getContainer();
-    $this->entityManager = $this->container->get('entity.manager');
-    $this->state = $this->container->get('state');
-  }
-
-  /**
-   * Generates a random ID avoiding collisions.
-   *
-   * @param bool $string
-   *   (optional) Whether the id should have string type. Defaults to FALSE.
-   *
-   * @return int|string
-   *   The entity identifier.
-   */
-  protected function generateRandomEntityId($string = FALSE) {
-    srand(time());
-    do {
-      // 0x7FFFFFFF is the maximum allowed value for integers that works for all
-      // Drupal supported databases and is known to work for other databases
-      // like SQL Server 2014 and Oracle 10 too.
-      $id = $string ? $this->randomMachineName() : mt_rand(1, 0x7FFFFFFF);
-    } while (isset($this->generatedIds[$id]));
-    $this->generatedIds[$id] = $id;
-    return $id;
-  }
-
-}
diff --git a/core/modules/views/src/Tests/ViewKernelTestBase.php b/core/modules/views/src/Tests/ViewKernelTestBase.php
deleted file mode 100644
index 3a5df34..0000000
--- a/core/modules/views/src/Tests/ViewKernelTestBase.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-
-namespace Drupal\views\Tests;
-
-use Drupal\Core\Database\Query\SelectInterface;
-use Drupal\simpletest\KernelTestBase;
-
-/**
- * Defines a base class for Views unit testing.
- *
- * Use this test class for unit tests of Views functionality. If a test
- * requires the full web test environment provided by WebTestBase, extend
- * ViewTestBase instead.
- *
- * @deprecated in Drupal 8.0.x, will be removed in Drupal 8.2.x. Use
- *   \Drupal\Tests\views\Kernel\ViewsKernelTestBase instead.
- *
- * @see \Drupal\Tests\views\Kernel\ViewsKernelTestBase
- */
-abstract class ViewKernelTestBase extends KernelTestBase {
-
-  use ViewResultAssertionTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = array('system', 'views', 'views_test_config', 'views_test_data', 'user');
-
-  /**
-   * {@inheritdoc}
-   *
-   * @param bool $import_test_views
-   *   Should the views specififed on the test class be imported. If you need
-   *   to setup some additional stuff, like fields, you need to call false and
-   *   then call createTestViews for your own.
-   */
-  protected function setUp($import_test_views = TRUE) {
-    parent::setUp();
-
-    $this->installSchema('system', array('sequences'));
-    $this->setUpFixtures();
-
-    if ($import_test_views) {
-      ViewTestData::createTestViews(get_class($this), array('views_test_config'));
-    }
-  }
-
-  /**
-   * Sets up the configuration and schema of views and views_test_data modules.
-   *
-   * Because the schema of views_test_data.module is dependent on the test
-   * using it, it cannot be enabled normally.
-   */
-  protected function setUpFixtures() {
-    // First install the system module. Many Views have Page displays have menu
-    // links, and for those to work, the system menus must already be present.
-    $this->installConfig(array('system'));
-
-    // Define the schema and views data variable before enabling the test module.
-    \Drupal::state()->set('views_test_data_schema', $this->schemaDefinition());
-    \Drupal::state()->set('views_test_data_views_data', $this->viewsData());
-
-    $this->installConfig(array('views', 'views_test_config', 'views_test_data'));
-    foreach ($this->schemaDefinition() as $table => $schema) {
-      $this->installSchema('views_test_data', $table);
-    }
-
-    \Drupal::service('router.builder')->rebuild();
-
-    // Load the test dataset.
-    $data_set = $this->dataSet();
-    $query = db_insert('views_test_data')
-      ->fields(array_keys($data_set[0]));
-    foreach ($data_set as $record) {
-      $query->values($record);
-    }
-    $query->execute();
-  }
-
-  /**
-   * Orders a nested array containing a result set based on a given column.
-   *
-   * @param array $result_set
-   *   An array of rows from a result set, with each row as an associative
-   *   array keyed by column name.
-   * @param string $column
-   *   The column name by which to sort the result set.
-   * @param bool $reverse
-   *   (optional) Boolean indicating whether to sort the result set in reverse
-   *   order. Defaults to FALSE.
-   *
-   * @return array
-   *   The sorted result set.
-   */
-  protected function orderResultSet($result_set, $column, $reverse = FALSE) {
-    $order = $reverse ? -1 : 1;
-    usort($result_set, function ($a, $b) use ($column, $order) {
-      if ($a[$column] == $b[$column]) {
-        return 0;
-      }
-      return $order * (($a[$column] < $b[$column]) ? -1 : 1);
-    });
-    return $result_set;
-  }
-
-  /**
-   * Executes a view with debugging.
-   *
-   * @param \Drupal\views\ViewExecutable $view
-   *   The view object.
-   * @param array $args
-   *   (optional) An array of the view arguments to use for the view.
-   */
-  protected function executeView($view, array $args = array()) {
-    $view->setDisplay();
-    $view->preExecute($args);
-    $view->execute();
-    $verbose_message = '<pre>Executed view: ' . ((string) $view->build_info['query']) . '</pre>';
-    if ($view->build_info['query'] instanceof SelectInterface) {
-      $verbose_message .= '<pre>Arguments: ' . print_r($view->build_info['query']->getArguments(), TRUE) . '</pre>';
-    }
-    $this->verbose($verbose_message);
-  }
-
-  /**
-   * Returns the schema definition.
-   */
-  protected function schemaDefinition() {
-    return ViewTestData::schemaDefinition();
-  }
-
-  /**
-   * Returns the views data definition.
-   */
-  protected function viewsData() {
-    return ViewTestData::viewsData();
-  }
-
-  /**
-   * Returns a very simple test dataset.
-   */
-  protected function dataSet() {
-    return ViewTestData::dataSet();
-  }
-
-}
