/*
* @(#)HorizontalShardsTests.java 2013-6-5 下午23:33:33
*
* Copyright (c) 2011-2013 Makersoft.org all rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
*
*/
package org.makersoft.shards.integration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import org.junit.Assert;
import org.junit.Test;
import org.makersoft.shards.domain.shard0.User;
import org.makersoft.shards.mapper.shard0.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Transactional;
/**
* unit test for horizontal shards.
*/
@ContextConfiguration(locations = { "classpath:applicationContext-horizontal.xml" })
public class HorizontalShardsTests extends BaseIntegrationTest {
@Autowired(required = true)
private UserMapper userMapper;
private Random random = new Random();
@Test
@Transactional
public void test_insert() throws Exception {
for (int i = 0; i < 1000; i++) {
String username = "makersoft_" + i;
String password = "makersoft_" + i;
int age = random.nextInt(30);
int gender = (i % 2 == 0) ? User.SEX_MALE : User.SEX_FEMALE;
User user = this.insert_new_user(username, password, age, gender);
Assert.assertNotNull(user.getId());
}
}
@Test
@Transactional
public void test_update() throws Exception{
User user = this.insert_new_user("makersoft", "makersoft", 26, User.SEX_MALE);
user.setUsername("www.makersoft.org");
user.setPassword("www.makersoft.org");
//update entity
int rows = userMapper.udpateUser(user);
Assert.assertEquals(1, rows);
}
@Test
@Transactional
public void test_update_by_id() throws Exception {
User user = this.insert_new_user("makersoft", "makersoft", 26, User.SEX_MALE);
user.setUsername("username");
user.setPassword("password");
int rows = userMapper.updateById(user);
Assert.assertEquals(1, rows);
}
@Test
@Transactional
public void test_get_all_count() throws Exception{
int count = userMapper.getAllCount();
Assert.assertEquals(0, count);
for(int i = 0; i < 10; i++){
String username = "makersoft_" + i;
String password = "makersoft_" + i;
int age = random.nextInt(30);
int gender = (i % 2 == 0) ? User.SEX_MALE : User.SEX_FEMALE;
User user = this.insert_new_user(username, password, age, gender);
Assert.assertNotNull(user.getId());
}
count = userMapper.getAllCount();
Assert.assertEquals(10, count);
}
@Test
@Transactional
public void test_find_all() throws Exception{
Map<String, User> caches = new HashMap<String, User>();
for(int i = 0; i < 10; i++){
String username = "makersoft_" + i;
String password = "makersoft_" + i;
int age = random.nextInt(30);
int gender = (i % 2 == 0) ? User.SEX_MALE : User.SEX_FEMALE;
User user = this.insert_new_user(username, password, age, gender);
Assert.assertNotNull(user.getId());
caches.put(user.getId(), user);
}
List<User> users = userMapper.findAll();
Assert.assertEquals(10, users.size());
for(User entity : users) {
User user = caches.get(entity.getId());
Assert.assertNotNull(user);
//has override hashCode and equals method
Assert.assertEquals(entity, user);
}
}
@Test
@Transactional
public void test_find_by_gender() throws Exception{
for(int i = 0; i < 10; i++){
String username = "makersoft_" + i;
String password = "makersoft_" + i;
int age = random.nextInt(30);
int gender = (i % 2 == 0) ? User.SEX_MALE : User.SEX_FEMALE;
User user = this.insert_new_user(username, password, age, gender);
Assert.assertNotNull(user.getId());
}
List<User> users = userMapper.findByGender(User.SEX_MALE);
Assert.assertEquals(5, users.size());
}
@Test
@Transactional
public void test_get_by_id() throws Exception{
User user = this.insert_new_user("makersoft", "makersoft", 26, User.SEX_MALE);
User result = userMapper.getById(user.getId());
Assert.assertNotNull(result);
Assert.assertEquals(user, result);
}
@Test
@Transactional
public void test_delete_by_id() throws Exception{
User user = this.insert_new_user("makersoft", "makersoft", 26, User.SEX_MALE);
int rows = userMapper.deleteById(user.getId());
Assert.assertEquals(1, rows);
user = userMapper.getById(user.getId());
Assert.assertNull(user);
}
@Test
@Transactional
public void test_delete() throws Exception{
for(int i = 0; i < 10; i++){
String username = "makersoft_" + i;
String password = "makersoft_" + i;
int age = random.nextInt(30);
int gender = (i % 2 == 0) ? User.SEX_MALE : User.SEX_FEMALE;
User user = this.insert_new_user(username, password, age, gender);
Assert.assertNotNull(user.getId());
}
int rows = userMapper.deleteAll();
Assert.assertEquals(10, rows);
int count = userMapper.getAllCount();
Assert.assertEquals(0, count);
}
/**
* for insert new user
*/
private User insert_new_user(String username, String password, int age, int gender){
User user = new User(username, password, gender);
user.setAge(age);
userMapper.insertUser(user);
Assert.assertNotNull(user.getId());
return user;
}
}