Esempio n. 1
0
 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,
                             ['./'])
Esempio n. 4
0
 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,
       '.',
       '.',
       ''))
Esempio n. 6
0
    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()
Esempio n. 7
0
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
Esempio n. 8
0
    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()
Esempio n. 9
0
 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'))
Esempio n. 11
0
 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]
Esempio n. 12
0
    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)
Esempio n. 14
0
    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)
Esempio n. 15
0
 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))