0,0 → 1,164 |
package ak.webcontrol.core.model.test; |
|
import net.sf.hibernate.*; |
import ak.webcontrol.core.model.*; |
import ak.webcontrol.util.*; |
|
public class Test |
{ |
public static void test() |
throws Exception |
{ |
// delete objects if they are already in the database |
HibernateUtil.currentSession().delete( |
"from MailAlias where address like ?", "%@test.domain", Hibernate.STRING); |
HibernateUtil.currentSession().delete( |
"from SystemUser where uid=?", new Integer(1001), Hibernate.INTEGER); |
HibernateUtil.currentSession().delete( |
"from Mailbox where login=?", "testuser@test.domain", Hibernate.STRING); |
HibernateUtil.currentSession().delete( |
"from InetDomain where name=?", "test.domain", Hibernate.STRING); |
HibernateUtil.currentSession().delete( |
"from User where login=?", "testuser", Hibernate.STRING); |
HibernateUtil.currentSession().flush(); |
|
User user; |
InetDomain inetDomain; |
Mailbox mailbox; |
MailAlias mailAlias; |
SystemUser systemUser; |
|
// create objects |
user = UserManager.getInstance().create(); |
user.setLogin("testuser"); |
user.setNewPassword("none"); |
UserManager.getInstance().save(user); |
|
inetDomain = InetDomainManager.getInstance().create(); |
inetDomain.setName("test.domain"); |
inetDomain.setOwner(UserManager.getInstance().findForLogin("testuser")); |
InetDomainManager.getInstance().save(inetDomain); |
|
systemUser = SystemUserManager.getInstance().create(); |
systemUser.setUid(new Integer(1001)); |
systemUser.setName("test"); |
SystemUserManager.getInstance().save(systemUser); |
|
mailbox = MailboxManager.getInstance().create(); |
mailbox.setLogin("testuser@test.domain"); |
mailbox.setDomain(InetDomainManager.getInstance().findForName("test.domain")); |
mailbox.setOwner(UserManager.getInstance().findForLogin("testuser")); |
mailbox.setVirusCheck(new Boolean(true)); |
mailbox.setSpamCheck(new Boolean(false)); |
mailbox.setSystemUser(systemUser); |
MailboxManager.getInstance().save(mailbox); |
|
mailAlias = MailAliasManager.getInstance().create(); |
mailAlias.setAddress("some.name@test.domain"); |
mailAlias.setDomain(InetDomainManager.getInstance().findForName("test.domain")); |
mailAlias.setOwner(UserManager.getInstance().findForLogin("testuser")); |
MailAliasManager.getInstance().save(mailAlias); |
|
HibernateUtil.currentSession().flush(); |
} |
|
public static void testUser() |
throws Exception |
{ |
User user = UserManager.getInstance().findForLogin("testuser"); |
|
if(user == null) { |
System.out.println("create new user"); |
user = UserManager.getInstance().create(); |
} |
else { |
System.out.println("get existing user"); |
} |
|
user.setLogin("testuser"); |
|
// |
// benchmark hibernate update |
// |
int benchmarkCount = 100; |
|
// first measure object change time |
long startTime = System.currentTimeMillis(); |
for(int i = 0; i < benchmarkCount; i++) { |
user.setNewPassword((i % 2 == 0) ? "a" : "b"); |
} |
|
// then object change & DB update |
long betweenTime = System.currentTimeMillis(); |
for(int i = 0; i < benchmarkCount; i++) { |
user.setNewPassword((i % 2 == 0) ? "a" : "b"); |
UserManager.getInstance().save(user); |
HibernateUtil.currentSession().flush(); |
} |
|
// results |
long endTime = System.currentTimeMillis(); |
System.out.println("Object change: " + (betweenTime-startTime) + " ms"); |
System.out.println("DB update: " + (endTime-betweenTime) + " ms"); |
|
user.setNewPassword("none"); |
UserManager.getInstance().save(user); |
} |
|
public static void testInetDomain() |
throws Exception |
{ |
InetDomain inetDomain = InetDomainManager.getInstance().findForName("test.domain"); |
|
if(inetDomain == null) { |
System.out.println("create new domain"); |
inetDomain = InetDomainManager.getInstance().create(); |
} |
else { |
System.out.println("get existing domain"); |
} |
|
inetDomain.setName("test.domain"); |
inetDomain.setOwner(UserManager.getInstance().findForLogin("testuser")); |
|
InetDomainManager.getInstance().save(inetDomain); |
} |
|
public static void main(String[] args) |
throws Exception |
{ |
UserManager.getInstance(); |
InetDomainManager.getInstance(); |
SystemUserManager.getInstance(); |
MailboxManager.getInstance(); |
MailAliasManager.getInstance(); |
|
try { |
HibernateUtil.beginTransaction(); |
//testUser(); |
//testInetDomain(); |
test(); |
HibernateUtil.commitTransaction(); |
} |
catch(Exception ex) { |
ex.printStackTrace(); |
HibernateUtil.rollbackTransaction(); |
throw ex; |
} |
finally { |
HibernateUtil.closeSession(); |
} |
} |
|
private static String randomString(int len) |
throws java.io.UnsupportedEncodingException |
{ |
byte[] buf = new byte[len]; |
|
for(int i = 0; i < len; i++) { |
buf[i] = (byte)(Math.random() * 26 + 97); |
} |
|
return new String(buf, "ascii"); |
} |
} |