1
//*___INFO__MARK_BEGIN__*/
2
/*************************************************************************
4
* The Contents of this file are made available subject to the terms of
5
* the Sun Industry Standards Source License Version 1.2
7
* Sun Microsystems Inc., March, 2001
10
* Sun Industry Standards Source License Version 1.2
11
* =================================================
12
* The contents of this file are subject to the Sun Industry Standards
13
* Source License Version 1.2 (the "License"); You may not use this file
14
* except in compliance with the License. You may obtain a copy of the
15
* License at http://gridengine.sunsource.net/Gridengine_SISSL_license.html
17
* Software provided under this License is provided on an "AS IS" basis,
18
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
19
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
20
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
21
* See the License for the specific provisions governing your rights and
22
* obligations concerning the Software.
24
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
26
* Copyright: 2001 by Sun Microsystems, Inc.
28
* All Rights Reserved.
30
************************************************************************/
31
/*___INFO__MARK_END__*/
33
package com.sun.grid.jgdi.util.shell.editor;
35
import com.sun.grid.jgdi.BaseTestCase;
36
import com.sun.grid.jgdi.JGDI;
37
import com.sun.grid.jgdi.JGDIException;
38
import com.sun.grid.jgdi.configuration.UserSet;
39
import com.sun.grid.jgdi.configuration.UserSetImpl;
40
import java.util.Arrays;
41
import com.sun.grid.jgdi.configuration.*;
46
public class JGDIGEObjectEditorTest extends BaseTestCase {
49
private ClusterQueue cq1;
50
private Project prj1, prj2, prj3, prj4;
51
private UserSet us1, us2, us3;
52
private ParallelEnvironmentImpl pe1, pe2;
53
private HostgroupImpl hg1, hg2;
55
public JGDIGEObjectEditorTest(String testName) {
59
protected synchronized void setUp() throws Exception {
65
private void init() throws JGDIException {
67
cq1 = new ClusterQueueImpl(true);
68
cq1.setName("testQueue_1");
69
cq1.addHostlist("@allhosts");
71
if ((cq = jgdi.getClusterQueue(cq1.getName())) != null) {
72
jgdi.deleteClusterQueue(cq);
74
jgdi.addClusterQueue(cq1);
77
prj1 = new ProjectImpl("newProjectName");
78
prj2 = new ProjectImpl("project2");
79
prj3 = new ProjectImpl("project3");
80
prj4 = new ProjectImpl("project4");
81
if ((prj = jgdi.getProject("ProjectName")) != null) {
82
jgdi.deleteProject(prj);
84
if ((prj = jgdi.getProject(prj1.getName())) != null) {
85
jgdi.deleteProject(prj);
87
if ((prj = jgdi.getProject(prj2.getName())) != null) {
88
jgdi.deleteProject(prj);
90
if ((prj = jgdi.getProject(prj3.getName())) != null) {
91
jgdi.deleteProject(prj);
93
if ((prj = jgdi.getProject(prj4.getName())) != null) {
94
jgdi.deleteProject(prj);
98
hg1 = new HostgroupImpl("@hgroup1");
99
if ((hg = jgdi.getHostgroup(hg1.getName())) != null) {
100
jgdi.deleteHostgroup(hg);
104
us1 = new UserSetImpl("user1");
105
us2 = new UserSetImpl("user2");
106
us3 = new UserSetImpl("user3");
107
if ((us = jgdi.getUserSet("user1")) != null) {
108
jgdi.deleteUserSet(us);
110
if ((us = jgdi.getUserSet("user2")) != null) {
111
jgdi.deleteUserSet(us);
113
if ((us = jgdi.getUserSet("user3")) != null) {
114
jgdi.deleteUserSet(us);
117
ParallelEnvironment pe;
118
pe1 = new ParallelEnvironmentImpl(true);
119
pe1.setName("oldPe");
120
pe2 = new ParallelEnvironmentImpl(true);
122
if ((pe = jgdi.getParallelEnvironment(pe1.getName())) != null) {
123
jgdi.deleteParallelEnvironment(pe);
125
if ((pe = jgdi.getParallelEnvironment(pe2.getName())) != null) {
126
jgdi.deleteParallelEnvironment(pe);
129
jgdi.addProject(prj1);
130
jgdi.addProject(prj2);
131
jgdi.addProject(prj3);
132
jgdi.addProject(prj4);
133
jgdi.addHostgroup(hg1);
134
jgdi.addUserSet(us1);
135
jgdi.addUserSet(us2);
136
jgdi.addUserSet(us3);
137
jgdi.addParallelEnvironment(pe1);
138
jgdi.addParallelEnvironment(pe2);
141
protected void tearDown() throws Exception {
145
public void testUpdateObjectWithText_SetProjectAcl() throws Exception {
146
System.out.println("testUpdateObjectWithText_SetProjectAcl");
147
GEObjectEditor.updateObjectWithText(jgdi, prj1, "acl user1 user2 user3");
148
jgdi.updateProject(prj1);
149
assertEquals(Arrays.asList(new Object[] {new UserSetImpl("user1"), new UserSetImpl("user2"), new UserSetImpl("user3")}), jgdi.getProject(prj1.getName()).getAclList());
152
public void testUpdateObjectWithText_SetProjectAll1() throws Exception {
153
Project newProject = new ProjectImpl(true);
154
System.out.println("testUpdateObjectWithText_SetProjectAll1");
155
String text = "name ProjectName\n oticket 1566\n fshare 666 \n acl user1 user2 \n xacl user3";
156
GEObjectEditor.updateObjectWithText(jgdi, newProject, text);
157
jgdi.addProject(newProject);
158
assertEquals("ProjectName", jgdi.getProject(newProject.getName()).getName());
159
assertEquals(1566 ,jgdi.getProject(newProject.getName()).getOticket());
160
assertEquals(666 ,jgdi.getProject(newProject.getName()).getFshare());
161
assertEquals(2, jgdi.getProject(newProject.getName()).getAclCount());
162
assertTrue(jgdi.getProject(newProject.getName()).getAcl(0).equalsCompletely(new UserImpl("user1")));
163
assertTrue(jgdi.getProject(newProject.getName()).getAcl(1).equalsCompletely(new UserImpl("user2")));
164
assertEquals(1, jgdi.getProject(newProject.getName()).getXaclCount());
165
assertTrue(jgdi.getProject(newProject.getName()).getXacl(0).equalsCompletely(new UserImpl("user3")));
166
assertEquals(Arrays.asList(new Object[] {new UserSetImpl("user1"), new UserSetImpl("user2")}), jgdi.getProject(newProject.getName()).getAclList());
167
assertEquals(Arrays.asList(new Object[] {new UserSetImpl("user3")}), jgdi.getProject(newProject.getName()).getXaclList());
168
jgdi.deleteProject(newProject);
171
public void testUpdateObjectWithText_FailUpdateClusterQueueName() {
172
System.out.print("testUpdateObjectWithText_FailUpdateClusterQueueName");
174
GEObjectEditor.updateObjectWithText(jgdi, cq1, "name newQueueName");
175
jgdi.updateClusterQueue(cq1);
177
} catch (JGDIException ex) {
178
System.out.print(" - " + ex.getMessage());
183
public void testUpdateObjectWithText_SetClusterQueuePeWithNone() throws Exception {
184
System.out.println("testUpdateObjectWithText_SetClusterQueuePeWithNone");
185
GEObjectEditor.updateObjectWithText(jgdi, cq1, "pe_list NONE,[@hgroup1=oldPe myPe]");
186
jgdi.updateClusterQueue(cq1);
188
assertEquals(0, jgdi.getClusterQueue(cq1.getName()).getPeCount("@/"));
190
assertEquals(2, jgdi.getClusterQueue(cq1.getName()).getPeCount("@hgroup1"));
191
assertEquals("oldPe", jgdi.getClusterQueue(cq1.getName()).getPe("@hgroup1",0));
192
assertEquals("myPe", jgdi.getClusterQueue(cq1.getName()).getPe("@hgroup1",1));
195
public void testUpdateObjectWithText_SetClusterQueuePrologWithNone() throws Exception {
196
System.out.println("testUpdateObjectWithText_SetClusterQueuePrologWithNone");
197
GEObjectEditor.updateObjectWithText(jgdi, cq1, "prolog secret,[@hgroup1=/bin/sh],[host_to_be_added=NONE],[unknown1=/bin/tcsh],[new5=unknown]");
198
jgdi.updateClusterQueue(cq1);
199
assertEquals("secret", jgdi.getClusterQueue(cq1.getName()).getProlog("@/"));
200
assertEquals("/bin/sh", jgdi.getClusterQueue(cq1.getName()).getProlog("@hgroup1"));
201
assertEquals("NONE", jgdi.getClusterQueue(cq1.getName()).getProlog("host_to_be_added"));
202
assertEquals("/bin/tcsh", jgdi.getClusterQueue(cq1.getName()).getProlog("unknown1"));
203
assertEquals("unknown", jgdi.getClusterQueue(cq1.getName()).getProlog("new5"));
206
public void testUpdateObjectWithText_SetClusterQueueAll_1() throws Exception {
207
System.out.println("testUpdateObjectWithText_SetClusterQueueAll_1");
208
GEObjectEditor.updateObjectWithText(jgdi, cq1, "name "+cq1.getName()+"\n"+
209
"projects "+prj1.getName()+" "+prj2.getName()+
210
",["+hg1.getName()+"="+prj1.getName()+" "+prj4.getName()+
211
"],[host1="+prj3.getName()+" "+prj1.getName()+" "+prj4.getName()+"]\n" +
212
" pe make,["+hg1.getName()+"="+pe1.getName()+" "+pe2.getName()+"]\n"+
213
" load_thresholds np_load_avg=1.75,qname="+cq1.getName()+",rerun=true,s_rss=3k,h_rss=NONE \\\n" +"["+hg1.getName()+"=qname="+cq1.getName()+",swap_free=1G]\n");
214
jgdi.updateClusterQueue(cq1);
216
assertEquals("testQueue_1", jgdi.getClusterQueue(cq1.getName()).getName());
218
assertEquals(2,jgdi.getClusterQueue(cq1.getName()).getProjectsCount("@/"));
219
assertEquals(prj1.getName(), jgdi.getClusterQueue(cq1.getName()).getProjects("@/",0).getName());
220
assertEquals(prj2.getName(), jgdi.getClusterQueue(cq1.getName()).getProjects("@/",1).getName());
221
assertTrue(jgdi.getClusterQueue(cq1.getName()).getProjects("@/",0).equalsCompletely(new ProjectImpl(prj1.getName())));
222
assertTrue(jgdi.getClusterQueue(cq1.getName()).getProjects("@/",1).equalsCompletely(new ProjectImpl(prj2.getName())));
224
assertEquals(2,jgdi.getClusterQueue(cq1.getName()).getProjectsCount(hg1.getName()));
225
assertEquals(prj1.getName(), jgdi.getClusterQueue(cq1.getName()).getProjects(hg1.getName(),0).getName());
226
assertEquals(prj4.getName(), jgdi.getClusterQueue(cq1.getName()).getProjects(hg1.getName(),1).getName());
227
assertTrue(jgdi.getClusterQueue(cq1.getName()).getProjects(hg1.getName(),0).equalsCompletely(new ProjectImpl(prj1.getName())));
228
assertTrue(jgdi.getClusterQueue(cq1.getName()).getProjects(hg1.getName(),1).equalsCompletely(new ProjectImpl(prj4.getName())));
230
assertEquals(3,jgdi.getClusterQueue(cq1.getName()).getProjectsCount("host1"));
231
assertEquals(prj3.getName(), jgdi.getClusterQueue(cq1.getName()).getProjects("host1",0).getName());
232
assertEquals(prj1.getName(), jgdi.getClusterQueue(cq1.getName()).getProjects("host1",1).getName());
233
assertEquals(prj4.getName(), jgdi.getClusterQueue(cq1.getName()).getProjects("host1",2).getName());
234
assertTrue(jgdi.getClusterQueue(cq1.getName()).getProjects("host1",0).equalsCompletely(new ProjectImpl(prj3.getName())));
235
assertTrue(jgdi.getClusterQueue(cq1.getName()).getProjects("host1",1).equalsCompletely(new ProjectImpl(prj1.getName())));
236
assertTrue(jgdi.getClusterQueue(cq1.getName()).getProjects("host1",2).equalsCompletely(new ProjectImpl(prj4.getName())));
239
assertEquals(1,jgdi.getClusterQueue(cq1.getName()).getPeCount("@/"));
240
assertEquals("make", jgdi.getClusterQueue(cq1.getName()).getPe("@/",0));
242
assertEquals(2,jgdi.getClusterQueue(cq1.getName()).getPeCount(hg1.getName()));
243
assertEquals(pe1.getName(), jgdi.getClusterQueue(cq1.getName()).getPe(hg1.getName(),0));
244
assertEquals(pe2.getName(), jgdi.getClusterQueue(cq1.getName()).getPe(hg1.getName(),1));
247
assertEquals(5, jgdi.getClusterQueue(cq1.getName()).getLoadThresholdsCount("@/"));
248
assertEquals("np_load_avg",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",0).getName());
249
assertEquals("1.75",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",0).getStringval());
251
assertEquals("qname",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",1).getName());
252
assertEquals(cq1.getName(),jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",1).getStringval());
254
assertEquals("rerun",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",2).getName());
255
assertEquals("true",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",2).getStringval());
257
assertEquals("s_rss",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",3).getName());
258
assertEquals("3k",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",3).getStringval());
260
assertEquals("h_rss",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",4).getName());
261
assertEquals("NONE",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds("@/",4).getStringval());
263
assertEquals(2, jgdi.getClusterQueue(cq1.getName()).getLoadThresholdsCount(hg1.getName()));
264
assertEquals("qname",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds(hg1.getName(),0).getName());
265
assertEquals(cq1.getName(),jgdi.getClusterQueue(cq1.getName()).getLoadThresholds(hg1.getName(),0).getStringval());
267
assertEquals("swap_free",jgdi.getClusterQueue(cq1.getName()).getLoadThresholds(hg1.getName(),1).getName());
268
assertEquals("1G", jgdi.getClusterQueue(cq1.getName()).getLoadThresholds(hg1.getName(),1).getStringval());
271
public static void main(String[] args) throws Exception {
272
GEObjectEditorTest g = new GEObjectEditorTest("testClusterQueue");