forked from Mirror/ollama4j
		
	Add integration tests and enhance test configurations
Introduced integration tests for various API functionalities, ensuring comprehensive coverage. Updated test dependencies in `pom.xml` and added handling for unknown JSON properties in the `Model` class. Also included configuration to support running unit and integration tests in the CI workflow.
This commit is contained in:
		@@ -323,26 +323,58 @@ public class OllamaAPI {
 | 
			
		||||
    public void pullModel(String modelName) throws OllamaBaseException, IOException, URISyntaxException, InterruptedException {
 | 
			
		||||
        String url = this.host + "/api/pull";
 | 
			
		||||
        String jsonData = new ModelRequest(modelName).toString();
 | 
			
		||||
        HttpRequest request = getRequestBuilderDefault(new URI(url)).POST(HttpRequest.BodyPublishers.ofString(jsonData)).header("Accept", "application/json").header("Content-type", "application/json").build();
 | 
			
		||||
        HttpRequest request = getRequestBuilderDefault(new URI(url))
 | 
			
		||||
                .POST(HttpRequest.BodyPublishers.ofString(jsonData))
 | 
			
		||||
                .header("Accept", "application/json")
 | 
			
		||||
                .header("Content-type", "application/json")
 | 
			
		||||
                .build();
 | 
			
		||||
        HttpClient client = HttpClient.newHttpClient();
 | 
			
		||||
        HttpResponse<InputStream> response = client.send(request, HttpResponse.BodyHandlers.ofInputStream());
 | 
			
		||||
        int statusCode = response.statusCode();
 | 
			
		||||
        InputStream responseBodyStream = response.body();
 | 
			
		||||
        String responseString = "";
 | 
			
		||||
        boolean success = false; // Flag to check the pull success.
 | 
			
		||||
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(responseBodyStream, StandardCharsets.UTF_8))) {
 | 
			
		||||
            String line;
 | 
			
		||||
            while ((line = reader.readLine()) != null) {
 | 
			
		||||
                ModelPullResponse modelPullResponse = Utils.getObjectMapper().readValue(line, ModelPullResponse.class);
 | 
			
		||||
                if (verbose) {
 | 
			
		||||
                    logger.info(modelPullResponse.getStatus());
 | 
			
		||||
                if (modelPullResponse != null && modelPullResponse.getStatus() != null) {
 | 
			
		||||
                    if (verbose) {
 | 
			
		||||
                        logger.info(modelName + ": " + modelPullResponse.getStatus());
 | 
			
		||||
                    }
 | 
			
		||||
                    // Check if status is "success" and set success flag to true.
 | 
			
		||||
                    if ("success".equalsIgnoreCase(modelPullResponse.getStatus())) {
 | 
			
		||||
                        success = true;
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    logger.error("Received null or invalid status for model pull.");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (!success) {
 | 
			
		||||
            logger.error("Model pull failed or returned invalid status.");
 | 
			
		||||
            throw new OllamaBaseException("Model pull failed or returned invalid status.");
 | 
			
		||||
        }
 | 
			
		||||
        if (statusCode != 200) {
 | 
			
		||||
            throw new OllamaBaseException(statusCode + " - " + responseString);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public String getVersion() throws URISyntaxException, IOException, InterruptedException, OllamaBaseException {
 | 
			
		||||
        String url = this.host + "/api/version";
 | 
			
		||||
        HttpClient httpClient = HttpClient.newHttpClient();
 | 
			
		||||
        HttpRequest httpRequest = getRequestBuilderDefault(new URI(url)).header("Accept", "application/json").header("Content-type", "application/json").GET().build();
 | 
			
		||||
        HttpResponse<String> response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
 | 
			
		||||
        int statusCode = response.statusCode();
 | 
			
		||||
        String responseString = response.body();
 | 
			
		||||
        if (statusCode == 200) {
 | 
			
		||||
            return Utils.getObjectMapper().readValue(responseString, OllamaVersion.class).getVersion();
 | 
			
		||||
        } else {
 | 
			
		||||
            throw new OllamaBaseException(statusCode + " - " + responseString);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Pulls a model using the specified Ollama library model tag.
 | 
			
		||||
     * The model is identified by a name and a tag, which are combined into a single identifier
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,14 @@ package io.github.ollama4j.models.response;
 | 
			
		||||
 | 
			
		||||
import java.time.OffsetDateTime;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
			
		||||
import com.fasterxml.jackson.core.JsonProcessingException;
 | 
			
		||||
import io.github.ollama4j.utils.Utils;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@JsonIgnoreProperties(ignoreUnknown = true)
 | 
			
		||||
public class Model {
 | 
			
		||||
 | 
			
		||||
  private String name;
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,10 @@
 | 
			
		||||
package io.github.ollama4j.models.response;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class OllamaVersion {
 | 
			
		||||
    private String version;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user