@NotNull
 public static Collection<FqName> getTopLevelFunctionFqNames(
     @NotNull Project project, @NotNull GlobalSearchScope scope, boolean shouldBeExtension) {
   Collection<FqName> result = Sets.newHashSet();
   Collection<PsiClass> packageClasses =
       getClassesByAnnotation(KotlinPackage.class.getSimpleName(), project, scope);
   for (PsiClass psiClass : packageClasses) {
     String qualifiedName = psiClass.getQualifiedName();
     if (qualifiedName == null) {
       continue;
     }
     FqName packageFqName = new FqName(qualifiedName).parent();
     PackageData data = getPackageData(psiClass);
     if (data == null) {
       continue;
     }
     NameResolver nameResolver = data.getNameResolver();
     for (ProtoBuf.Callable callable : data.getPackageProto().getMemberList()) {
       if (callable.hasReceiverType() == shouldBeExtension) {
         Name name = nameResolver.getName(callable.getName());
         result.add(packageFqName.child(name));
       }
     }
   }
   return result;
 }
  @Test
  public void testGetIndexedValuesStringIsNotNameOrId() throws Exception {
    final NameResolver<ProjectComponent> nameResolver = mockController.getMock(NameResolver.class);
    ComponentIndexInfoResolver resolver = new ComponentIndexInfoResolver(nameResolver);

    nameResolver.getIdsFromName("abc");
    mockController.setReturnValue(Collections.emptyList());
    mockController.replay();

    final List<String> result = resolver.getIndexedValues("abc");
    assertEquals(0, result.size());
    mockController.verify();
  }
  @Test
  public void testGetIndexedValuesLongExists() throws Exception {
    final NameResolver<ProjectComponent> nameResolver = mockController.getMock(NameResolver.class);
    ComponentIndexInfoResolver resolver = new ComponentIndexInfoResolver(nameResolver);

    nameResolver.idExists(2L);
    mockController.setReturnValue(true);
    mockController.replay();

    final List<String> result = resolver.getIndexedValues(2L);
    assertEquals(1, result.size());
    assertTrue(result.contains("2"));
    mockController.verify();
  }
  @Test
  public void testGetIndexedValuesLongIdIsNameDoesntExist() throws Exception {
    final NameResolver<ProjectComponent> nameResolver = mockController.getMock(NameResolver.class);
    ComponentIndexInfoResolver resolver = new ComponentIndexInfoResolver(nameResolver);

    nameResolver.idExists(100L);
    mockController.setReturnValue(false);
    nameResolver.getIdsFromName("100");
    mockController.setReturnValue(Collections.emptyList());
    mockController.replay();

    final List<String> result = resolver.getIndexedValues(100L);
    assertTrue(result.isEmpty());
    mockController.verify();
  }
  @Test
  public void testGetIndexedValuesStringHappyPath() throws Exception {
    final MockComponent mockComponent1 = new MockComponent(1L, "component1");
    final MockComponent mockComponent2 = new MockComponent(2L, "component1");

    final NameResolver<ProjectComponent> nameResolver = mockController.getMock(NameResolver.class);
    nameResolver.getIdsFromName("component1");
    mockController.setReturnValue(CollectionBuilder.newBuilder("1", "2").asList());
    mockController.replay();

    ComponentIndexInfoResolver resolver = new ComponentIndexInfoResolver(nameResolver);

    final List<String> result = resolver.getIndexedValues("component1");
    assertEquals(2, result.size());
    assertTrue(result.contains(mockComponent1.getId().toString()));
    assertTrue(result.contains(mockComponent2.getId().toString()));

    mockController.verify();
  }
Ejemplo n.º 6
0
  /**
   * NameServer and NameClient test.
   *
   * @throws Exception
   */
  @Test
  public void testNameClient() throws Exception {

    LOG.log(Level.FINEST, this.name.getMethodName());

    final String localAddress = localAddressProvider.getLocalAddress();
    final Injector injector = Tang.Factory.getTang().newInjector();
    injector.bindVolatileParameter(
        NameServerParameters.NameServerIdentifierFactory.class, this.factory);
    injector.bindVolatileInstance(LocalAddressProvider.class, this.localAddressProvider);
    try (final NameServer server = injector.getInstance(NameServer.class)) {
      this.port = server.getPort();

      final Map<Identifier, InetSocketAddress> idToAddrMap =
          new HashMap<Identifier, InetSocketAddress>();
      idToAddrMap.put(
          this.factory.getNewInstance("task1"), new InetSocketAddress(localAddress, 7001));
      idToAddrMap.put(
          this.factory.getNewInstance("task2"), new InetSocketAddress(localAddress, 7002));

      // registration
      // invoke registration from the client side
      Configuration nameResolverConf =
          NameResolverConfiguration.CONF
              .set(NameResolverConfiguration.NAME_SERVER_HOSTNAME, localAddress)
              .set(NameResolverConfiguration.NAME_SERVICE_PORT, this.port)
              .set(NameResolverConfiguration.CACHE_TIMEOUT, this.TTL)
              .set(NameResolverConfiguration.RETRY_TIMEOUT, RETRY_TIMEOUT)
              .set(NameResolverConfiguration.RETRY_COUNT, RETRY_COUNT)
              .build();

      try (final NameResolver client =
          Tang.Factory.getTang().newInjector(nameResolverConf).getInstance(NameClient.class)) {
        for (final Identifier id : idToAddrMap.keySet()) {
          client.register(id, idToAddrMap.get(id));
        }

        // wait
        final Set<Identifier> ids = idToAddrMap.keySet();
        busyWait(server, ids.size(), ids);

        // lookup
        final Identifier id1 = this.factory.getNewInstance("task1");
        final Identifier id2 = this.factory.getNewInstance("task2");

        final Map<Identifier, InetSocketAddress> respMap =
            new HashMap<Identifier, InetSocketAddress>();
        InetSocketAddress addr1 = client.lookup(id1);
        respMap.put(id1, addr1);
        InetSocketAddress addr2 = client.lookup(id2);
        respMap.put(id2, addr2);

        for (final Identifier id : respMap.keySet()) {
          LOG.log(Level.FINEST, "Mapping: {0} -> {1}", new Object[] {id, respMap.get(id)});
        }

        Assert.assertTrue(isEqual(idToAddrMap, respMap));

        // un-registration
        for (final Identifier id : idToAddrMap.keySet()) {
          client.unregister(id);
        }

        // wait
        busyWait(server, 0, ids);

        final Map<Identifier, InetSocketAddress> serverMap =
            new HashMap<Identifier, InetSocketAddress>();
        addr1 = server.lookup(id1);
        if (addr1 != null) {
          serverMap.put(id1, addr1);
        }
        addr2 = server.lookup(id1);
        if (addr2 != null) {
          serverMap.put(id2, addr2);
        }

        Assert.assertEquals(0, serverMap.size());
      }
    }
  }