Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(923)

Unified Diff: swarm_client/tests/run_isolated_smoke_test.py

Issue 69143004: Delete swarm_client. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: swarm_client/tests/run_isolated_smoke_test.py
===================================================================
--- swarm_client/tests/run_isolated_smoke_test.py (revision 235167)
+++ swarm_client/tests/run_isolated_smoke_test.py (working copy)
@@ -1,278 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import hashlib
-import json
-import logging
-import os
-import shutil
-import subprocess
-import sys
-import unittest
-
-ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-sys.path.insert(0, ROOT_DIR)
-
-import isolateserver
-import run_isolated
-
-VERBOSE = False
-
-ALGO = hashlib.sha1
-
-
-class CalledProcessError(subprocess.CalledProcessError):
- """Makes 2.6 version act like 2.7"""
- def __init__(self, returncode, cmd, output, stderr, cwd):
- super(CalledProcessError, self).__init__(returncode, cmd)
- self.output = output
- self.stderr = stderr
- self.cwd = cwd
-
- def __str__(self):
- return super(CalledProcessError, self).__str__() + (
- '\n'
- 'cwd=%s\n%s\n%s\n%s') % (
- self.cwd,
- self.output,
- self.stderr,
- ' '.join(self.cmd))
-
-
-def list_files_tree(directory):
- """Returns the list of all the files in a tree."""
- actual = []
- for root, _dirs, files in os.walk(directory):
- actual.extend(os.path.join(root, f)[len(directory)+1:] for f in files)
- return sorted(actual)
-
-
-def write_content(filepath, content):
- with open(filepath, 'wb') as f:
- f.write(content)
-
-
-def write_json(filepath, data):
- with open(filepath, 'wb') as f:
- json.dump(data, f, sort_keys=True, indent=2)
-
-
-class RunSwarmStep(unittest.TestCase):
- def setUp(self):
- self.tempdir = run_isolated.make_temp_dir(
- 'run_isolated_smoke_test', ROOT_DIR)
- logging.debug(self.tempdir)
- # run_isolated.zip executable package.
- self.run_isolated_zip = os.path.join(self.tempdir, 'run_isolated.zip')
- run_isolated.get_as_zip_package().zip_into_file(
- self.run_isolated_zip, compress=False)
- # The "source" hash table.
- self.table = os.path.join(self.tempdir, 'table')
- os.mkdir(self.table)
- # The slave-side cache.
- self.cache = os.path.join(self.tempdir, 'cache')
-
- self.data_dir = os.path.join(ROOT_DIR, 'tests', 'run_isolated')
-
- def tearDown(self):
- shutil.rmtree(self.tempdir)
-
- def _result_tree(self):
- return list_files_tree(self.tempdir)
-
- def _run(self, args):
- cmd = [sys.executable, self.run_isolated_zip]
- cmd.extend(args)
- if VERBOSE:
- cmd.extend(['-v'] * 2)
- pipe = None
- else:
- pipe = subprocess.PIPE
- logging.debug(' '.join(cmd))
- proc = subprocess.Popen(
- cmd,
- stdout=pipe,
- stderr=pipe,
- universal_newlines=True,
- cwd=self.tempdir)
- out, err = proc.communicate()
- return out, err, proc.returncode
-
- def _store_result(self, result_data):
- """Stores a .isolated file in the hash table."""
- result_text = json.dumps(result_data, sort_keys=True, indent=2)
- result_hash = ALGO(result_text).hexdigest()
- write_content(os.path.join(self.table, result_hash), result_text)
- return result_hash
-
- def _store(self, filename):
- """Stores a test data file in the table.
-
- Returns its sha-1 hash.
- """
- filepath = os.path.join(self.data_dir, filename)
- h = isolateserver.hash_file(filepath, ALGO)
- shutil.copyfile(filepath, os.path.join(self.table, h))
- return h
-
- def _generate_args_with_isolated(self, isolated):
- """Generates the standard arguments used with isolated as the isolated file.
-
- Returns a list of the required arguments.
- """
- return [
- '--isolated', isolated,
- '--cache', self.cache,
- '--isolate-server', self.table,
- '--namespace', 'default',
- ]
-
- def _generate_args_with_hash(self, hash_value):
- """Generates the standard arguments used with |hash_value| as the hash.
-
- Returns a list of the required arguments.
- """
- return [
- '--hash', hash_value,
- '--cache', self.cache,
- '--isolate-server', self.table,
- '--namespace', 'default',
- ]
-
- def test_result(self):
- # Loads an arbitrary .isolated on the file system.
- isolated = os.path.join(self.data_dir, 'repeated_files.isolated')
- expected = [
- 'state.json',
- self._store('file1.txt'),
- self._store('file1_copy.txt'),
- self._store('repeated_files.py'),
- isolateserver.hash_file(isolated, ALGO),
- ]
- out, err, returncode = self._run(
- self._generate_args_with_isolated(isolated))
- if not VERBOSE:
- self.assertEqual('Success\n', out, (out, err))
- self.assertEqual(0, returncode)
- actual = list_files_tree(self.cache)
- self.assertEqual(sorted(set(expected)), actual)
-
- def test_hash(self):
- # Loads the .isolated from the store as a hash.
- result_hash = self._store('repeated_files.isolated')
- expected = [
- 'state.json',
- self._store('file1.txt'),
- self._store('file1_copy.txt'),
- self._store('repeated_files.py'),
- result_hash,
- ]
-
- out, err, returncode = self._run(self._generate_args_with_hash(result_hash))
- if not VERBOSE:
- self.assertEqual('', err)
- self.assertEqual('Success\n', out, out)
- self.assertEqual(0, returncode)
- actual = list_files_tree(self.cache)
- self.assertEqual(sorted(set(expected)), actual)
-
- def test_fail_empty_isolated(self):
- result_hash = self._store_result({})
- expected = [
- 'state.json',
- result_hash,
- ]
- out, err, returncode = self._run(self._generate_args_with_hash(result_hash))
- if not VERBOSE:
- self.assertEqual('', out)
- self.assertIn('No command to run\n', err)
- self.assertEqual(1, returncode)
- actual = list_files_tree(self.cache)
- self.assertEqual(sorted(expected), actual)
-
- def test_includes(self):
- # Loads an .isolated that includes another one.
-
- # References manifest2.isolated and repeated_files.isolated. Maps file3.txt
- # as file2.txt.
- result_hash = self._store('check_files.isolated')
- expected = [
- 'state.json',
- self._store('check_files.py'),
- self._store('file1.txt'),
- self._store('file3.txt'),
- # Maps file1.txt.
- self._store('manifest1.isolated'),
- # References manifest1.isolated. Maps file2.txt but it is overriden.
- self._store('manifest2.isolated'),
- result_hash,
- self._store('repeated_files.py'),
- self._store('repeated_files.isolated'),
- ]
- out, err, returncode = self._run(self._generate_args_with_hash(result_hash))
- if not VERBOSE:
- self.assertEqual('', err)
- self.assertEqual('Success\n', out)
- self.assertEqual(0, returncode)
- actual = list_files_tree(self.cache)
- self.assertEqual(sorted(expected), actual)
-
- def test_link_all_hash_instances(self):
- # Load an isolated file with the same file (same sha-1 hash), listed under
- # two different names and ensure both are created.
- result_hash = self._store('repeated_files.isolated')
- expected = [
- 'state.json',
- result_hash,
- self._store('file1.txt'),
- self._store('repeated_files.py')
- ]
-
- out, err, returncode = self._run(self._generate_args_with_hash(result_hash))
- if not VERBOSE:
- self.assertEqual('', err)
- self.assertEqual('Success\n', out)
- self.assertEqual(0, returncode)
- actual = list_files_tree(self.cache)
- self.assertEqual(sorted(expected), actual)
-
- def test_delete_invalid_cache_entry(self):
- isolated_file = os.path.join(self.data_dir, 'file_with_size.isolated')
- file1_hash = self._store('file1.txt')
-
- # Run the test once to generate the cache.
- out, err, returncode = self._run(self._generate_args_with_isolated(
- isolated_file))
- if VERBOSE:
- print out
- print err
- self.assertEqual(0, returncode)
-
- # Modify one of the files in the cache to be invalid.
- cached_file_path = os.path.join(self.cache, file1_hash)
- with open(cached_file_path, 'w') as f:
- f.write('invalid size')
- logging.info('Modified %s', cached_file_path)
- # Ensure that the cache has an invalid file.
- self.assertNotEqual(
- os.stat(os.path.join(self.data_dir, 'file1.txt')).st_size,
- os.stat(cached_file_path).st_size)
-
- # Rerun the test and make sure the cache contains the right file afterwards.
- out, err, returncode = self._run(self._generate_args_with_isolated(
- isolated_file))
- if VERBOSE:
- print out
- print err
- self.assertEqual(0, returncode)
-
- self.assertEqual(os.stat(os.path.join(self.data_dir, 'file1.txt')).st_size,
- os.stat(cached_file_path).st_size)
-
-
-if __name__ == '__main__':
- VERBOSE = '-v' in sys.argv
- logging.basicConfig(level=logging.DEBUG if VERBOSE else logging.ERROR)
- unittest.main()
« no previous file with comments | « swarm_client/tests/run_isolated/repeated_files.py ('k') | swarm_client/tests/short_expression_finder_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698