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 DSLTestBase with TestMethods {
46 def testParsePolicies = {
48 assertEquals(creditpolicy.algorithms.size, 2)
49 assertEquals(creditpolicy.algorithms(0).algorithms.size,
50 creditpolicy.resources.size)
51 assertEquals(creditpolicy.algorithms(1).algorithms.size,
52 creditpolicy.resources.size)
54 val d = creditpolicy.findResource("diskspace").get
57 assertNotSame(creditpolicy.algorithms(0).algorithms(d),
58 creditpolicy.algorithms(1).algorithms(d))
62 def testParsePricelists = {
64 assertEquals(3, creditpolicy.pricelists.size)
65 assertNotNone(creditpolicy.findPriceList("everyTue2"))
66 val res = creditpolicy.findResource("diskspace")
69 creditpolicy.findPriceList("everyTue2").get.prices.get(res.get).get, 0.01F)
73 def testParseCreditPlans = {
75 assertEquals(2, creditpolicy.creditplans.size)
76 val plan = creditpolicy.findCreditPlan("every10days")
78 assertEquals(20, plan.get.credits, 0.1F)
79 assertEquals(4, plan.get.at.size)
84 var input = "12 12 * * *"
85 var output = parseCronString(input)
86 assertEquals(output, List(DSLTimeSpec(12, 12, -1, -1, -1)))
88 input = "12 4 3 jaN-ApR *"
89 output = parseCronString(input)
90 assertEquals(4, output.size)
91 assertEquals(output(2), DSLTimeSpec(12, 4, 3, 3, -1))
93 input = "12 4 3 jaN-ApR MOn-FRi"
94 output = parseCronString(input)
95 assertEquals(20, output.size)
97 input = "12 4 foo jaN-ApR *"
98 assertThrows[DSLParseException](parseCronString(input))
100 input = "12 4 * jaN,Mar,ApR 6"
101 output = parseCronString(input)
102 assertEquals(3, output.size)
103 assertEquals(DSLTimeSpec(12, 4, -1, 4, 6), output(2))
106 assertThrows[DSLParseException](parseCronString(input))
110 def testSerialization = {