/* * Seldon -- open source prediction engine * ======================================= * Copyright 2011-2015 Seldon Technologies Ltd and Rummble Ltd (http://www.seldon.io/) * ********************************************************************************************** * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ********************************************************************************************** */ package io.seldon.client.test; import io.seldon.client.beans.*; import io.seldon.client.exception.ApiException; import java.util.List; import org.apache.commons.lang3.RandomStringUtils; import org.apache.log4j.Logger; import org.junit.Test; /** * Created by: marc on 31/08/2011 at 10:49 */ public class ApiClientTest extends BaseClientTest { private static final Logger logger = Logger.getLogger(ApiClientTest.class); private static final int USER_LIMIT = 10; private static final int ITEM_LIMIT = 10; private static final int DIMENSIONS_LIMIT = 10; private static final int USER_RECOMMENDATIONS_LIMIT = 10; private static final int USER_ACTION_LIMIT = 25; @Test public void getActions() throws ApiException { List<ActionBean> actions = apiClient.getActions(); for (ActionBean action : actions) { logger.info("Action> " + action); } } @Test(expected = ApiException.class) public void retrieveFakeUser() throws ApiException { String fakeUsername = RandomStringUtils.randomAlphanumeric(32); apiClient.getUser(fakeUsername, true); } private <T> void logList(List<T> beans) { for (T bean : beans) { logger.info(bean); } } @Test public void retrieveUsers() throws ApiException { List<UserBean> users = apiClient.getUsers(USER_LIMIT, false); logList(users); } @Test public void retrieveUsersSecure() throws ApiException { List<UserBean> users = apiClient.getUsers(USER_LIMIT, false, true); logList(users); } @Test public void retrieveUsersFull() throws ApiException { List<UserBean> users = apiClient.getUsers(USER_LIMIT, true); logList(users); } private void retrieveUsers(List<UserBean> users, Boolean full) throws ApiException { for (UserBean user : users) { String userId = user.getId(); UserBean retrievedUser = apiClient.getUser(userId, full); logger.info("Retrieved user: " + retrievedUser); } } @Test public void retrieveUsersById() throws ApiException { List<UserBean> users = apiClient.getUsers(USER_LIMIT, false); retrieveUsers(users, false); } @Test public void retrieveUsersFullById() throws ApiException { List<UserBean> users = apiClient.getUsers(USER_LIMIT, false); retrieveUsers(users, true); } @Test public void retrieveRecommendationsWithDimensionsForUser() throws ApiException { List<UserBean> users = apiClient.getUsers(USER_LIMIT, false); List<DimensionBean> dimensions = apiClient.getDimensions(); for (UserBean user : users) { String userId = user.getId(); int limit = Math.min(dimensions.size(), DIMENSIONS_LIMIT); for (DimensionBean dimension : dimensions.subList(0, limit)) { int dimensionId = dimension.getDimId(); @SuppressWarnings({"NullableProblems"}) final int recommendations_limit = USER_RECOMMENDATIONS_LIMIT; List<ItemBean> recommendations = apiClient.getRecommendations(userId, null, dimensionId, recommendations_limit); for (ItemBean recommendation : recommendations) { logger.debug("Recommendation for user: " + userId + " => in dimension: " + dimension + " => " + recommendation); } } } } @Test public void retrieveItems() throws ApiException { List<ItemBean> items = apiClient.getItems(ITEM_LIMIT, false); logList(items); } @Test public void retrieveItemsFull() throws ApiException { List<ItemBean> items = apiClient.getItems(ITEM_LIMIT, true); logList(items); } @Test public void retrieveItemsById() throws ApiException { List<ItemBean> items = apiClient.getItems(ITEM_LIMIT, false); for (ItemBean item : items) { String itemId = item.getId(); ItemBean itemBean = apiClient.getItem(itemId, false); logger.info("Item: " + itemBean); } } @Test public void retrieveItemsFullById() throws ApiException { List<ItemBean> items = apiClient.getItems(ITEM_LIMIT, false); for (ItemBean item : items) { String itemId = item.getId(); ItemBean itemBean = apiClient.getItem(itemId, true); logger.info("Item: " + itemBean); } } @Test public void retrieveDimensions() throws ApiException { getDimensions(); } @Test public void retrieveDimensionsById() throws ApiException { List<DimensionBean> dimensions = getDimensions(); for (DimensionBean knownDimension : dimensions) { String dimensionId = String.valueOf(knownDimension.getDimId()); DimensionBean dimensionBean = apiClient.getDimensionById(dimensionId); logger.info("Dimension: " + dimensionBean); } } private List<DimensionBean> getDimensions() throws ApiException { List<DimensionBean> dimensions = apiClient.getDimensions(); for (DimensionBean dimension : dimensions) { logger.info("Dimension: " + dimension); } return dimensions; } @Test public void retrieveActionsForUsers() throws ApiException { List<UserBean> users = apiClient.getUsers(USER_LIMIT, false); for (UserBean user : users) { String userId = user.getId(); List<ActionBean> actionsList = apiClient.getUserActions(userId, USER_ACTION_LIMIT); for (ActionBean actionBean : actionsList) { logger.info("Action: " + actionBean); } } } @Test public void retrieveActions() throws ApiException { List<ActionBean> actionsList = apiClient.getActions(); for (ActionBean actionBean : actionsList) { logger.info("Action: " + actionBean); } } @Test public void retrieveActionsById() throws ApiException { List<ActionBean> actionsList = apiClient.getActions(); for (ActionBean actionBean : actionsList) { String actionId = String.valueOf(actionBean.getActionId()); ActionBean individualActionBean = apiClient.getActionById(actionId); logger.info("Action: " + individualActionBean); } } @Test public void retrieveRecommendationsForUser() throws ApiException { List<UserBean> users = apiClient.getUsers(USER_LIMIT, false); for (UserBean user : users) { String userId = user.getId(); List<ItemBean> recommendations = apiClient.getRecommendations(userId); for (ItemBean recommendation : recommendations) { logger.info("Recommendation for user: " + userId + " => " + recommendation); } } } }