2 * Copyright 2011 GRNET S.A. All rights reserved.
4 * Redistribution and use in source and binary forms, with or
5 * without modification, are permitted provided that the following
8 * 1. Redistributions of source code must retain the above
9 * copyright notice, this list of conditions and the following
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials
15 * provided with the distribution.
17 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGE.
30 * The views and conclusions contained in the software and
31 * documentation are those of the authors and should not be
32 * interpreted as representing official policies, either expressed
33 * or implied, of GRNET S.A.
36 package gr.grnet.aquarium.logic.test
38 import org.junit.Assert._
39 import org.junit.{Test}
40 import gr.grnet.aquarium.logic.accounting.dsl._
41 import gr.grnet.aquarium.util.TestMethods
43 class DSLTest extends DSL with TestMethods {
45 var creditpolicy : DSLPolicy = _
49 getClass.getClassLoader.getResourceAsStream("policy.yaml")
51 assertNotNull(creditpolicy)
55 def testParsePolicies = {
57 assertEquals(creditpolicy.algorithms.size, 2)
58 assertEquals(creditpolicy.algorithms(0).algorithms.size,
59 creditpolicy.resources.size)
60 assertEquals(creditpolicy.algorithms(1).algorithms.size,
61 creditpolicy.resources.size)
63 val d = creditpolicy.findResource("diskspace").get
66 assertNotSame(creditpolicy.algorithms(0).algorithms(d),
67 creditpolicy.algorithms(1).algorithms(d))
71 def testParsePricelists = {
73 assertEquals(3, creditpolicy.pricelists.size)
74 assertNotNone(creditpolicy.findPriceList("everyTue2"))
75 val res = creditpolicy.findResource("diskspace")
78 creditpolicy.findPriceList("everyTue2").get.prices.get(res.get).get, 0.01F)
83 var input = "12 12 * * *"
84 var output = parseCronString(input)
85 assertEquals(output, List(DSLTimeSpec(12, 12, -1, -1, -1)))
87 input = "12 4 3 jaN-ApR *"
88 output = parseCronString(input)
89 assertEquals(4, output.size)
90 assertEquals(output(2), DSLTimeSpec(12, 4, 3, 3, -1))
92 input = "12 4 3 jaN-ApR MOn-FRi"
93 output = parseCronString(input)
94 assertEquals(20, output.size)
96 input = "12 4 foo jaN-ApR *"
97 assertThrows[DSLParseException](parseCronString(input))
99 input = "12 4 * jaN,Mar,ApR 6"
100 output = parseCronString(input)
101 assertEquals(3, output.size)
102 assertEquals(DSLTimeSpec(12, 4, -1, 4, 6), output(2))
105 assertThrows[DSLParseException](parseCronString(input))
109 def testSerialization = {