def testRender(self): self._base_path = os.path.join(self._base_path, 'render') fetcher = LocalFetcher(self._base_path) context = json.loads(self._ReadLocalFile('test1.json')) cache_builder = FetcherCache.Builder(fetcher, 0) self._RenderTest( 'test1', TemplateDataSource('fake_branch', json.loads(self._ReadLocalFile('test1.json')), cache_builder, ['./'])) self._RenderTest( 'test2', TemplateDataSource('fake_branch', json.loads(self._ReadLocalFile('test2.json')), cache_builder, ['./']))
def _CreateTemplateDataSource(self, input_dict, cache_factory): return (TemplateDataSource.Factory( 'fake_channel', _FakeFactory(input_dict), self._fake_api_list_data_source_factory, self._fake_intro_data_source_factory, self._fake_samples_data_source_factory, cache_factory, '.', '.').Create(_FakeRequest(), 'extensions/foo'))
def _CreateTemplateDataSource(self, input_dict, cache_builder): return TemplateDataSource('fake_branch', input_dict, self._fake_intro_data_source, self._fake_samples_data_source, cache_builder, ['./'])
def _GetInstanceForBranch(self, branch): if branch in SERVER_INSTANCES: return SERVER_INSTANCES[branch] if branch == 'local': fetcher = LocalFetcher(EXTENSIONS_PATH) # No cache for local doc server. cache_timeout_seconds = 0 else: fetcher = SubversionFetcher(branch, EXTENSIONS_PATH, urlfetch) cache_timeout_seconds = 300 cache_builder = FetcherCache.Builder(fetcher, cache_timeout_seconds) api_data_source = APIDataSource(cache_builder, API_PATH) intro_data_source = IntroDataSource(cache_builder, [INTRO_PATH, ARTICLE_PATH]) samples_data_source = SamplesDataSource(fetcher, cache_builder, EXAMPLES_PATH) template_data_source = TemplateDataSource( branch, api_data_source, intro_data_source, samples_data_source, cache_builder, [PUBLIC_TEMPLATE_PATH, PRIVATE_TEMPLATE_PATH]) example_zipper = ExampleZipper(fetcher, cache_builder, DOCS_PATH, EXAMPLES_PATH) SERVER_INSTANCES[branch] = ServerInstance(template_data_source, example_zipper, cache_builder) return SERVER_INSTANCES[branch]
def _CreateTemplateDataSource(self, compiled_fs_factory, api_data=None): if api_data is None: api_data_factory = APIDataSource.Factory(compiled_fs_factory, 'fake_path', _FakeFactory()) else: api_data_factory = _FakeFactory(api_data) reference_resolver_factory = ReferenceResolver.Factory( api_data_factory, self._fake_api_list_data_source_factory, ObjectStoreCreator.ForTest()) @DisableLogging('error') # "was never set" error def create_from_factory(factory): path = 'extensions/foo' return factory.Create(Request.ForTest(path), path) return create_from_factory(TemplateDataSource.Factory( api_data_factory, self._fake_api_list_data_source_factory, self._fake_intro_data_source_factory, self._fake_samples_data_source_factory, self._fake_sidenav_data_source_factory, compiled_fs_factory, reference_resolver_factory, self._manifest_data_source, '.', '.', ''))
def __init__(self, channel, object_store_creator_factory, svn_file_system, github_file_system): self.svn_file_system = svn_file_system self.github_file_system = github_file_system self.compiled_fs_factory = CompiledFileSystem.Factory( svn_file_system, object_store_creator_factory) self.api_list_data_source_factory = APIListDataSource.Factory( self.compiled_fs_factory, svn_constants.API_PATH, svn_constants.PUBLIC_TEMPLATE_PATH) self.api_data_source_factory = APIDataSource.Factory( self.compiled_fs_factory, svn_constants.API_PATH) self.ref_resolver_factory = ReferenceResolver.Factory( self.api_data_source_factory, self.api_list_data_source_factory, object_store_creator_factory) self.api_data_source_factory.SetReferenceResolverFactory( self.ref_resolver_factory) # Note: samples are super slow in the dev server because it doesn't support # 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() else: svn_fs_for_samples = self.svn_file_system self.samples_data_source_factory = SamplesDataSource.Factory( channel, svn_fs_for_samples, self.github_file_system, self.ref_resolver_factory, object_store_creator_factory, svn_constants.EXAMPLES_PATH) self.api_data_source_factory.SetSamplesDataSourceFactory( self.samples_data_source_factory) self.intro_data_source_factory = IntroDataSource.Factory( self.compiled_fs_factory, self.ref_resolver_factory, [svn_constants.INTRO_PATH, svn_constants.ARTICLE_PATH]) self.sidenav_data_source_factory = SidenavDataSource.Factory( self.compiled_fs_factory, svn_constants.JSON_PATH) self.template_data_source_factory = TemplateDataSource.Factory( channel, self.api_data_source_factory, self.api_list_data_source_factory, self.intro_data_source_factory, self.samples_data_source_factory, self.sidenav_data_source_factory, self.compiled_fs_factory, self.ref_resolver_factory, svn_constants.PUBLIC_TEMPLATE_PATH, svn_constants.PRIVATE_TEMPLATE_PATH) self.example_zipper = ExampleZipper(self.compiled_fs_factory, svn_constants.DOCS_PATH) self.path_canonicalizer = PathCanonicalizer(channel, self.compiled_fs_factory) self.content_cache = self.compiled_fs_factory.GetOrCreateIdentity()
def _GetInstanceForBranch(channel_name, local_path): branch = BRANCH_UTILITY.GetBranchNumberForChannelName(channel_name) # The key for the server is a tuple of |channel_name| with |branch|, since # sometimes stable and beta point to the same branch. instance_key = _MakeInstanceKey(channel_name, branch) instance = SERVER_INSTANCES.get(instance_key, None) if instance is not None: return instance branch_memcache = InMemoryObjectStore(branch) if branch == 'local': file_system = LocalFileSystem(local_path) else: file_system = _CreateMemcacheFileSystem(branch, branch_memcache) cache_factory = CompiledFileSystem.Factory(file_system, branch_memcache) api_list_data_source_factory = APIListDataSource.Factory(cache_factory, file_system, API_PATH, PUBLIC_TEMPLATE_PATH) intro_data_source_factory = IntroDataSource.Factory( cache_factory, [INTRO_PATH, ARTICLE_PATH]) samples_data_source_factory = SamplesDataSource.Factory( channel_name, file_system, GITHUB_FILE_SYSTEM, cache_factory, GITHUB_COMPILED_FILE_SYSTEM, api_list_data_source_factory, EXAMPLES_PATH) api_data_source_factory = APIDataSource.Factory(cache_factory, API_PATH, samples_data_source_factory) template_data_source_factory = TemplateDataSource.Factory( channel_name, api_data_source_factory, api_list_data_source_factory, intro_data_source_factory, samples_data_source_factory, KNOWN_ISSUES_DATA_SOURCE, cache_factory, PUBLIC_TEMPLATE_PATH, PRIVATE_TEMPLATE_PATH) example_zipper = ExampleZipper(file_system, cache_factory, DOCS_PATH) instance = ServerInstance(template_data_source_factory, example_zipper, cache_factory) SERVER_INSTANCES[instance_key] = instance return instance
def __init__(self, channel, object_store_creator_factory, svn_file_system, github_file_system): self.svn_file_system = svn_file_system self.github_file_system = github_file_system self.compiled_fs_factory = CompiledFileSystem.Factory( svn_file_system, object_store_creator_factory) self.api_list_data_source_factory = APIListDataSource.Factory( self.compiled_fs_factory, svn_constants.API_PATH, svn_constants.PUBLIC_TEMPLATE_PATH) self.api_data_source_factory = APIDataSource.Factory( self.compiled_fs_factory, svn_constants.API_PATH) self.ref_resolver_factory = ReferenceResolver.Factory( self.api_data_source_factory, self.api_list_data_source_factory, object_store_creator_factory) self.api_data_source_factory.SetReferenceResolverFactory( self.ref_resolver_factory) self.samples_data_source_factory = SamplesDataSource.Factory( channel, self.svn_file_system, ServerInstance.github_file_system, self.ref_resolver_factory, object_store_creator_factory, svn_constants.EXAMPLES_PATH) self.api_data_source_factory.SetSamplesDataSourceFactory( self.samples_data_source_factory) self.intro_data_source_factory = IntroDataSource.Factory( self.compiled_fs_factory, self.ref_resolver_factory, [svn_constants.INTRO_PATH, svn_constants.ARTICLE_PATH]) self.sidenav_data_source_factory = SidenavDataSource.Factory( self.compiled_fs_factory, svn_constants.JSON_PATH) self.template_data_source_factory = TemplateDataSource.Factory( channel, self.api_data_source_factory, self.api_list_data_source_factory, self.intro_data_source_factory, self.samples_data_source_factory, self.sidenav_data_source_factory, self.compiled_fs_factory, self.ref_resolver_factory, svn_constants.PUBLIC_TEMPLATE_PATH, svn_constants.PRIVATE_TEMPLATE_PATH) self.example_zipper = ExampleZipper(self.compiled_fs_factory, svn_constants.DOCS_PATH) self.path_canonicalizer = PathCanonicalizer(channel, self.compiled_fs_factory) self.content_cache = self.compiled_fs_factory.GetOrCreateIdentity()
def testPartials(self): self._base_path = os.path.join(self._base_path, 'partials') fetcher = LocalFetcher(self._base_path) cache_builder = FetcherCache.Builder(fetcher, 0) t_data_source = TemplateDataSource('fake_branch', self._fake_api_data_source, cache_builder, ['./']) self.assertEqual( self._ReadLocalFile('test_expected.html'), t_data_source['test_tmpl'].render( json.loads(self._ReadLocalFile('input.json')), t_data_source).text)
def _CreateTemplateDataSource(self, compiled_fs_factory, api_data=None): if api_data is None: api_data_factory = APIDataSource.Factory(compiled_fs_factory, 'fake_path') else: api_data_factory = _FakeFactory(api_data) reference_resolver_factory = ReferenceResolver.Factory( api_data_factory, self._fake_api_list_data_source_factory, ObjectStoreCreator.Factory()) return (TemplateDataSource.Factory( 'fake_channel', api_data_factory, self._fake_api_list_data_source_factory, self._fake_intro_data_source_factory, self._fake_samples_data_source_factory, self._fake_sidenav_data_source_factory, compiled_fs_factory, reference_resolver_factory, '.', '.').Create(_FakeRequest(), 'extensions/foo'))
def _GetInstanceForBranch(self, branch): if branch in SERVER_INSTANCES: return SERVER_INSTANCES[branch] if branch == 'local': fetcher = LocalFetcher(EXTENSIONS_PATH) # No cache for local doc server. cache_timeout_seconds = 0 else: fetcher = SubversionFetcher(branch, EXTENSIONS_PATH, urlfetch) cache_timeout_seconds = 300 cache_builder = FetcherCache.Builder(fetcher, cache_timeout_seconds) api_data_source = APIDataSource(cache_builder, API_PATH) template_data_source = TemplateDataSource( branch, api_data_source, cache_builder, [PUBLIC_TEMPLATE_PATH, PRIVATE_TEMPLATE_PATH]) SERVER_INSTANCES[branch] = ServerInstance( template_data_source, cache_builder) return SERVER_INSTANCES[branch]
def testSimple(self): self._base_path = os.path.join(self._base_path, 'simple') fetcher = LocalFetcher(self._base_path) cache_builder = FetcherCache.Builder(fetcher, 0) t_data_source = TemplateDataSource('fake_branch', self._fake_api_data_source, cache_builder, ['./']) template_a1 = Handlebar(self._ReadLocalFile('test1.html')) self.assertEqual( template_a1.render({}, { 'templates': {} }).text, t_data_source['test1'].render({}, { 'templates': {} }).text) template_a2 = Handlebar(self._ReadLocalFile('test2.html')) self.assertEqual( template_a2.render({}, { 'templates': {} }).text, t_data_source['test2'].render({}, { 'templates': {} }).text) self.assertEqual(None, t_data_source['junk.html'])
def __init__(self, server_instance, base_dir): type(self)._BASE = base_dir TemplateDataSource.__init__(self, server_instance)
def __init__(self, channel, object_store_creator, host_file_system, app_samples_file_system, base_path, compiled_fs_factory): self.channel = channel self.object_store_creator = object_store_creator self.host_file_system = host_file_system self.app_samples_file_system = app_samples_file_system self.compiled_host_fs_factory = compiled_fs_factory self.api_list_data_source_factory = APIListDataSource.Factory( self.compiled_host_fs_factory, svn_constants.API_PATH, svn_constants.PUBLIC_TEMPLATE_PATH) self.api_data_source_factory = APIDataSource.Factory( self.compiled_host_fs_factory, svn_constants.API_PATH) self.ref_resolver_factory = ReferenceResolver.Factory( self.api_data_source_factory, self.api_list_data_source_factory, object_store_creator) self.api_data_source_factory.SetReferenceResolverFactory( self.ref_resolver_factory) # Note: samples are super slow in the dev server because it doesn't support # async fetch, so disable them. if IsDevServer(): extension_samples_fs = EmptyDirFileSystem() else: extension_samples_fs = self.host_file_system self.samples_data_source_factory = SamplesDataSource.Factory( channel, extension_samples_fs, CompiledFileSystem.Factory(extension_samples_fs, object_store_creator), self.app_samples_file_system, CompiledFileSystem.Factory(self.app_samples_file_system, object_store_creator), self.ref_resolver_factory, svn_constants.EXAMPLES_PATH) self.api_data_source_factory.SetSamplesDataSourceFactory( self.samples_data_source_factory) self.intro_data_source_factory = IntroDataSource.Factory( self.compiled_host_fs_factory, self.ref_resolver_factory, [svn_constants.INTRO_PATH, svn_constants.ARTICLE_PATH]) self.sidenav_data_source_factory = SidenavDataSource.Factory( self.compiled_host_fs_factory, svn_constants.JSON_PATH, base_path) self.template_data_source_factory = TemplateDataSource.Factory( channel, self.api_data_source_factory, self.api_list_data_source_factory, self.intro_data_source_factory, self.samples_data_source_factory, self.sidenav_data_source_factory, self.compiled_host_fs_factory, self.ref_resolver_factory, svn_constants.PUBLIC_TEMPLATE_PATH, svn_constants.PRIVATE_TEMPLATE_PATH, base_path) self.example_zipper = ExampleZipper(self.compiled_host_fs_factory, svn_constants.DOCS_PATH) self.path_canonicalizer = PathCanonicalizer( channel, self.compiled_host_fs_factory) self.content_cache = self.compiled_host_fs_factory.CreateIdentity( ServerInstance)
def __init__(self, server_instance, base_dir): type(self)._BASE = base_dir TemplateDataSource.__init__(self, server_instance)
def __init__(self, object_store_creator, host_file_system, app_samples_file_system, base_path, compiled_fs_factory, branch_utility, host_file_system_creator): self.object_store_creator = object_store_creator self.host_file_system = host_file_system self.app_samples_file_system = app_samples_file_system self.compiled_host_fs_factory = compiled_fs_factory self.host_file_system_creator = host_file_system_creator self.availability_finder_factory = AvailabilityFinder.Factory( object_store_creator, self.compiled_host_fs_factory, branch_utility, host_file_system_creator) self.api_list_data_source_factory = APIListDataSource.Factory( self.compiled_host_fs_factory, self.host_file_system, svn_constants.API_PATH, svn_constants.PUBLIC_TEMPLATE_PATH) self.api_data_source_factory = APIDataSource.Factory( self.compiled_host_fs_factory, svn_constants.API_PATH, self.availability_finder_factory) self.ref_resolver_factory = ReferenceResolver.Factory( self.api_data_source_factory, self.api_list_data_source_factory, object_store_creator) self.api_data_source_factory.SetReferenceResolverFactory( self.ref_resolver_factory) # Note: samples are super slow in the dev server because it doesn't support # async fetch, so disable them. if IsDevServer(): extension_samples_fs = EmptyDirFileSystem() else: extension_samples_fs = self.host_file_system self.samples_data_source_factory = SamplesDataSource.Factory( extension_samples_fs, CompiledFileSystem.Factory(extension_samples_fs, object_store_creator), self.app_samples_file_system, CompiledFileSystem.Factory(self.app_samples_file_system, object_store_creator), self.ref_resolver_factory, svn_constants.EXAMPLES_PATH, base_path) self.api_data_source_factory.SetSamplesDataSourceFactory( self.samples_data_source_factory) self.intro_data_source_factory = IntroDataSource.Factory( self.compiled_host_fs_factory, self.ref_resolver_factory, [svn_constants.INTRO_PATH, svn_constants.ARTICLE_PATH]) self.sidenav_data_source_factory = SidenavDataSource.Factory( self.compiled_host_fs_factory, svn_constants.JSON_PATH) self.manifest_data_source = ManifestDataSource( self.compiled_host_fs_factory, host_file_system, '/'.join( (svn_constants.JSON_PATH, 'manifest.json')), '/'.join( (svn_constants.API_PATH, '_manifest_features.json'))) self.template_data_source_factory = TemplateDataSource.Factory( self.api_data_source_factory, self.api_list_data_source_factory, self.intro_data_source_factory, self.samples_data_source_factory, self.sidenav_data_source_factory, self.compiled_host_fs_factory, self.ref_resolver_factory, self.manifest_data_source, svn_constants.PUBLIC_TEMPLATE_PATH, svn_constants.PRIVATE_TEMPLATE_PATH, base_path) self.api_data_source_factory.SetTemplateDataSource( self.template_data_source_factory) self.example_zipper = ExampleZipper(self.compiled_host_fs_factory, self.host_file_system, svn_constants.DOCS_PATH) self.path_canonicalizer = PathCanonicalizer( self.compiled_host_fs_factory) self.redirector = Redirector(self.compiled_host_fs_factory, self.host_file_system, svn_constants.PUBLIC_TEMPLATE_PATH)
def _CreateTemplateDataSource(self, partial_dir): return TemplateDataSource( ServerInstance.ForLocal(), None, # Request partial_dir='%s/test_data/template_data_source/%s' % (SERVER2, partial_dir))