# Java

## 1.  Installing java-SDK package

HyperTest's Maven packages are hosted on a GitHub public Maven registry.\
To install and use HyperTest's `java-sdk` package in your application, follow these steps:

1. Create MVN\_TOKEN - The Hypertest Team may share this with you, or you can generate your own personal access token by visiting [GitHub Personal Access Tokens](https://github.com/settings/tokens).
2. Add Repository Configuration in `pom.xml`
   1. Define Properties in `pom.xml` file
   2. Add the Repository in  `pom.xml` file
3. Add the HyperTest agent dependency to your project. You can check for the latest version on the [HyperTest Java SDK](https://central.sonatype.com/artifact/co.hypertest/hypertest-agent/versions).
4. Install HyperTest's java-sdk package

Add the following content in your `pom.xml`

<details>

<summary>pom.xml</summary>

```xml
<dependencies>
    .
    .
    .
    
    <dependency>
        <groupId>co.hypertest</groupId>
        <artifactId>hypertest-agent</artifactId>
        <version>0.1.13-alpha.43</version>
    </dependency>
</dependencies>

<properties>
    <MVN_USERNAME>hypertestcustomers/[YOUR_GITHUB_USERNAME]</MVN_USERNAME>
    <MVN_TOKEN>[YOUR_MVN_TOKEN]</MVN_TOKEN>
</properties>

<repositories>
    <repository>
        <id>github</id>
        <url>https://${MVN_USERNAME}:${MVN_TOKEN}@maven.pkg.github.com/hypertestco/autoqa_v2_java</url>
    </repository>
</repositories>
```

</details>

We support multiple package manager&#x20;

1. Maven
2. Gradle
3. Bazel

To run with maven

```bash
mvn clean install
```

To run with gradle

```gradle
./gradlew build
```

To run with bazel

```python
bazel run //:<YOUR-APPLICATION-MODULE>
```

## 2.  Initializing SDK

#### &#x20;2.1 Adding SDK in code

* Initalize the HyperTest Java SDK in the `public static void main` method of your service. This must be the first thing in your main method.
* \<HT\_SERVICE\_ID> is the identifier that we created in [**Adding your first service section**](https://docs-v2.hypertest.co/setup-guide/readme/adding-your-first-service)

{% hint style="warning" %}
This needs to happen as early in your app as possible.
{% endhint %}

```typescript
new HypertestAgentBuilder("<HT_SERVICE_ID>", "<YOUR_SERVICE_NAME>",  "<API_KEY>",
 "<LOGGER_URL>", "<APPLICATION_CLASS>").build();
```

#### 2.2 Mark app as ready

Call this method after `SpringApplication.run` when the app is ready to receive traffic, it indicates that tests can be started (This is important ONLY FOR REPLAY mode).

```javascript
// Rest Application code...
System.setProperty(APP_STATUS, UP_STATUS);
```

To enable hypertest, set the `HT_MODE` env variable to `RECORD` and start your app

## 3. Verifying traffic is captured

Start sending http requests on your app running with hypertest sdk.

You should start seeing requests under All requests section on the dashboard

<figure><img src="https://2702123086-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKGOAD6xy07C4jYV7QqmF%2Fuploads%2FUzYmxppUE9gtIkOyLjm7%2FScreenshot%20from%202023-09-04%2020-17-22.png?alt=media&#x26;token=1a63f1f8-8390-4610-ba1b-3afac3040034" alt=""><figcaption></figcaption></figure>
