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

Unified Diff: chrome/common/extensions/docs/server2/server_instance.py

Issue 14856006: Docserver: achieve online vs offline (cron vs instance) behaviour at the object (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 8 months 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: chrome/common/extensions/docs/server2/server_instance.py
diff --git a/chrome/common/extensions/docs/server2/server_instance.py b/chrome/common/extensions/docs/server2/server_instance.py
index faf0d21fa1c4e8973ffc2b96e12471f7d38285a9..f7f83ba5f87a858d94bf85101bce901a840b6413 100644
--- a/chrome/common/extensions/docs/server2/server_instance.py
+++ b/chrome/common/extensions/docs/server2/server_instance.py
@@ -31,50 +31,70 @@ from sidenav_data_source import SidenavDataSource
from subversion_file_system import SubversionFileSystem
import svn_constants
from template_data_source import TemplateDataSource
-from third_party.json_schema_compiler.memoize import memoize
from third_party.json_schema_compiler.model import UnixName
import url_constants
def _IsSamplesDisabled():
return IsDevServer()
-class ServerInstance(object):
- # Lazily create so we don't create github file systems unnecessarily in
- # tests.
- branch_utility = None
- github_file_system = None
+def _CreateBranchUtility(start_configuration):
+ return BranchUtility(
+ url_constants.OMAHA_PROXY_URL,
+ AppEngineUrlFetcher(),
+ ObjectStoreCreator.SharedFactory(GetAppVersion(),
+ start_configuration))
+
+def _CreateGithubFileSystem(start_configuration):
+ # Slight hack: creating a github file system is pointless if samples are
+ # disabled, since it's only used for apps samples.
+ if _IsSamplesDisabled():
+ return EmptyDirFileSystem()
+ return GithubFileSystem(
+ AppEngineUrlFetcher(url_constants.GITHUB_URL),
+ AppEngineBlobstore(),
+ ObjectStoreCreator.SharedFactory(GetAppVersion(),
+ start_configuration))
+class ServerInstance(object):
@staticmethod
- @memoize
- def GetOrCreateOffline(channel):
- '''Gets/creates a local ServerInstance, meaning that only resources local to
+ def CreateOffline(channel,
+ host_file_system_type=SubversionFileSystem,
+ app_samples_file_system=None):
+ '''Creates a local ServerInstance, meaning that only resources local to
the server - memcache, object store, etc, are queried. This amounts to not
setting up the subversion nor github file systems.
'''
- branch_utility = ServerInstance._GetOrCreateBranchUtility()
+ start_configuration = ObjectStoreCreator.START_POPULATED
+
+ branch_utility = _CreateBranchUtility(start_configuration)
branch = branch_utility.GetBranchNumberForChannelName(channel)
- object_store_creator_factory = ObjectStoreCreator.Factory(GetAppVersion(),
- branch)
+ object_store_creator_factory = ObjectStoreCreator.Factory(
+ GetAppVersion(),
+ branch,
+ start_configuration)
+
+ if app_samples_file_system is None:
+ app_samples_file_system = _CreateGithubFileSystem(start_configuration)
+
# No svn nor github file systems. Rely on the crons to fill the caches, and
# for the caches to exist.
return ServerInstance(
channel,
object_store_creator_factory,
- CachingFileSystem(OfflineFileSystem(SubversionFileSystem),
- object_store_creator_factory,
- use_existing_values=True),
- # TODO(kalman): convert GithubFileSystem to be wrappable in a
- # CachingFileSystem so that it can be replaced with an
- # OfflineFileSystem. Currently GFS doesn't set the child versions of
- # stat requests so it doesn't.
- ServerInstance._GetOrCreateGithubFileSystem())
+ CachingFileSystem(OfflineFileSystem(host_file_system_type),
+ object_store_creator_factory),
+ app_samples_file_system)
@staticmethod
- def CreateOnline(channel):
+ def CreateOnline(channel,
+ host_file_system=None,
+ app_samples_file_system=None):
'''Creates/creates an online server instance, meaning that both local and
subversion/github resources are queried.
'''
- branch_utility = ServerInstance._GetOrCreateBranchUtility()
+ start_configuration = ObjectStoreCreator.START_EMPTY
+
+ branch_utility = _CreateBranchUtility(start_configuration)
branch = branch_utility.GetBranchNumberForChannelName(channel)
if branch == 'trunk':
@@ -90,58 +110,43 @@ class ServerInstance(object):
viewvc_url = svn_url.replace(url_constants.SVN_URL,
url_constants.VIEWVC_URL)
- object_store_creator_factory = ObjectStoreCreator.Factory(GetAppVersion(),
- branch)
+ object_store_creator_factory = ObjectStoreCreator.Factory(
+ GetAppVersion(),
+ branch,
+ start_configuration)
- svn_file_system = CachingFileSystem(
- SubversionFileSystem(AppEngineUrlFetcher(svn_url),
- AppEngineUrlFetcher(viewvc_url)),
- object_store_creator_factory)
+ if host_file_system is None:
+ host_file_system = SubversionFileSystem(AppEngineUrlFetcher(svn_url),
+ AppEngineUrlFetcher(viewvc_url))
+ cached_host_file_system = CachingFileSystem(host_file_system,
+ object_store_creator_factory)
+
+ if app_samples_file_system is None:
+ app_samples_file_system = _CreateGithubFileSystem(start_configuration)
return ServerInstance(channel,
object_store_creator_factory,
- svn_file_system,
- ServerInstance._GetOrCreateGithubFileSystem())
+ cached_host_file_system,
+ app_samples_file_system)
@staticmethod
- def CreateForTest(file_system):
+ def CreateForTest(host_file_system):
return ServerInstance('test',
ObjectStoreCreator.TestFactory(),
- file_system,
- None)
-
- @staticmethod
- def _GetOrCreateBranchUtility():
- if ServerInstance.branch_utility is None:
- ServerInstance.branch_utility = BranchUtility(
- url_constants.OMAHA_PROXY_URL,
- AppEngineUrlFetcher())
- return ServerInstance.branch_utility
-
- @staticmethod
- def _GetOrCreateGithubFileSystem():
- # Initialising github is pointless if samples are disabled, since it's only
- # used for apps samples.
- if ServerInstance.github_file_system is None:
- if _IsSamplesDisabled():
- ServerInstance.github_file_system = EmptyDirFileSystem()
- else:
- ServerInstance.github_file_system = GithubFileSystem(
- AppEngineUrlFetcher(url_constants.GITHUB_URL),
- AppEngineBlobstore())
- return ServerInstance.github_file_system
+ host_file_system,
+ EmptyDirFileSystem())
def __init__(self,
channel,
object_store_creator_factory,
- svn_file_system,
- github_file_system):
- self.svn_file_system = svn_file_system
+ host_file_system,
+ app_samples_file_system):
+ self.host_file_system = host_file_system
- self.github_file_system = github_file_system
+ self.app_samples_file_system = app_samples_file_system
self.compiled_fs_factory = CompiledFileSystem.Factory(
- svn_file_system,
+ host_file_system,
object_store_creator_factory)
self.api_list_data_source_factory = APIListDataSource.Factory(
@@ -165,13 +170,13 @@ class ServerInstance(object):
# async fetch, so disable them. If you actually want to test samples, then
# good luck, and modify _IsSamplesDisabled at the top.
if _IsSamplesDisabled():
- svn_fs_for_samples = EmptyDirFileSystem()
+ extension_samples_fs = EmptyDirFileSystem()
else:
- svn_fs_for_samples = self.svn_file_system
+ extension_samples_fs = self.host_file_system
self.samples_data_source_factory = SamplesDataSource.Factory(
channel,
- svn_fs_for_samples,
- self.github_file_system,
+ extension_samples_fs,
+ self.app_samples_file_system,
self.ref_resolver_factory,
object_store_creator_factory,
svn_constants.EXAMPLES_PATH)

Powered by Google App Engine
This is Rietveld 408576698