Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/main/java/io/weaviate/client6/v1/api/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import javax.net.ssl.TrustManagerFactory;

import io.weaviate.client6.v1.internal.BuildInfo;
import io.weaviate.client6.v1.internal.ObjectBuilder;
import io.weaviate.client6.v1.internal.Timeout;
import io.weaviate.client6.v1.internal.TokenProvider;
Expand Down Expand Up @@ -178,6 +179,7 @@ public SelfT timeout(int initSeconds, int querySeconds, int insertSeconds) {
* Service if an appropriate vectorizer is configured for collection.
*/
private static final String HEADER_X_WEAVIATE_CLUSTER_URL = "X-Weaviate-Cluster-URL";
private static final String HEADER_X_WEAVIATE_CLIENT = "X-Weaviate-Client";

/**
* isWeaviateDomain returns true if the host matches weaviate.io,
Expand All @@ -190,13 +192,18 @@ private static boolean isWeaviateDomain(String host) {
lower.contains("weaviate.cloud");
}

private static final String VERSION = "weaviate-client-java/"
+ ((!BuildInfo.TAGS.isBlank() && BuildInfo.TAGS != "unknown") ? BuildInfo.TAGS
: (BuildInfo.BRANCH + "-" + BuildInfo.COMMIT_ID_ABBREV));

@Override
public Config build() {
// For clusters hosted on Weaviate Cloud, Weaviate Embedding Service
// will be available under the same domain.
if (isWeaviateDomain(httpHost) && authentication != null) {
setHeader(HEADER_X_WEAVIATE_CLUSTER_URL, "https://" + httpHost + ":" + httpPort);
}
setHeader(HEADER_X_WEAVIATE_CLIENT, VERSION);
return new Config(this);
}
}
Expand Down
16 changes: 10 additions & 6 deletions src/main/java/io/weaviate/client6/v1/internal/BuildInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,22 @@ private BuildInfo() {
public static final String BRANCH;
public static final String COMMIT_ID;
public static final String COMMIT_ID_ABBREV;
public static final String TAGS;

static {
var properties = new Properties();

try {
properties.load(BuildInfo.class.getClassLoader().getResourceAsStream("client6-git.properties"));
} catch (IOException | NullPointerException e) {
try (var is = BuildInfo.class.getClassLoader().getResourceAsStream("client6-git.properties")) {
if (is != null) {
properties.load(is);
}
} catch (IOException e) {
System.out.println("failed to load client6-git.properties, no build information will be available");
}

BRANCH = String.valueOf(properties.get("git.branch"));
COMMIT_ID = String.valueOf(properties.get("git.commit.id.full"));
COMMIT_ID_ABBREV = String.valueOf(properties.get("git.commit.id.abbrev"));
BRANCH = String.valueOf(properties.getOrDefault("git.branch", "unknown"));
COMMIT_ID = String.valueOf(properties.getOrDefault("git.commit.id.full", "unknown"));
COMMIT_ID_ABBREV = String.valueOf(properties.getOrDefault("git.commit.id.abbrev", "unknown"));
TAGS = String.valueOf(properties.getOrDefault("git.tags", "unknown"));
}
}
24 changes: 24 additions & 0 deletions src/test/java/io/weaviate/client6/v1/api/ConfigTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package io.weaviate.client6.v1.api;

import org.assertj.core.api.Assertions;
import org.junit.Test;

public class ConfigTest {

private static final String HEADER_KEY = "X-Weaviate-Client";

@Test
public void testHeaderPresence() {
Config config = new Config.Local().build();
Assertions.assertThat(config.headers()).containsKey(HEADER_KEY);
Assertions.assertThat(config.headers().get(HEADER_KEY)).isNotEmpty();

config = new Config.WeaviateCloud("http://localhost/", Authentication.apiKey("test_key")).build();
Assertions.assertThat(config.headers()).containsKey(HEADER_KEY);
Assertions.assertThat(config.headers().get(HEADER_KEY)).isNotEmpty();

config = new Config.Custom().httpHost("localhost").build();
Assertions.assertThat(config.headers()).containsKey(HEADER_KEY);
Assertions.assertThat(config.headers().get(HEADER_KEY)).isNotEmpty();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
public class BuildInfoTest {
private static final String BRANCH = gitBranch();
private static final String COMMIT_ID = gitCommit();
private static final String TAGS = gitTags();

@Test
public void testBuildInfo() throws IOException {
Expand All @@ -21,6 +22,7 @@ public void testBuildInfo() throws IOException {
Assertions.assertThat(BuildInfo.BRANCH).as("branch").isEqualTo(BRANCH);
Assertions.assertThat(BuildInfo.COMMIT_ID).as("commit.full").isEqualTo(COMMIT_ID);
Assertions.assertThat(COMMIT_ID).as("commit.abbrev").startsWith(BuildInfo.COMMIT_ID_ABBREV);
Assertions.assertThat(BuildInfo.TAGS).as("tags").isEqualTo(TAGS);
}

/** Get current non-abbreviated Git commit hash. */
Expand All @@ -33,6 +35,11 @@ private static String gitBranch() {
return runCommand("/usr/bin/git", "branch", "--show-current");
}

/** Get current git tags. */
private static String gitTags() {
return runCommand("/usr/bin/git", "tag", "--points-at", "HEAD");
}

/** Run shell command and return the output as multi-line string. */
private static String runCommand(String... cmdarray) {
try {
Expand Down