#!/usr/bin/env python
# test has been developed by Robert Harakaly and changed for SAM by Victor Galaktionov
# set filesize for a regular file having the given GUID set also last modification time to the current time (lfc_setfsizeg)
# meta: proxy=true
# meta: preconfig=../../LFC-config
 
import os, lfc, sys
from testClass import _test, _ntest, _testRunner, SAM_Run, LFC_VO, TEST_HOME

class test_setfsize_ok(_test):
    def info(self):
        return "Set file size on existing file guid"
    def prepare(self):
        self.name = LFC_VO + "/python_setfsize_test"
        self.guid = self.get_guid()
        ret = lfc.lfc_creatg(self.name, self.guid, 0664)
    def clean(self):
        lfc.lfc_unlink(self.name)
    def test(self):
        self.size=123456789L
        csumtype=""
        csumvalue=""
        ret=lfc.lfc_setfsizeg(self.guid,self.size, csumtype, csumvalue)
        stat=lfc.lfc_filestat()
        lfc.lfc_stat(self.name, stat)
        return (stat,ret)
    def ret(self):
        retval=lfc.lfc_filestat()
        retval.filesize=self.size
        return retval
    def compare(self, testVal, retVal):
        (ret, retRetVal) = retVal
        (test, testRetVal) = testVal
        retval = True
        if (retRetVal == testRetVal):
            retval = retval & ( test.filesize == ret.filesize )
        else:
            retval = False
        return retval


class test_nonexisting_guid(_test):
    def __init__(self):
        self.retVal = -1
    def info(self):
	return "Set filesize on nonexisting guid: "
    def test(self):
        self.size=987654321L
        csumtype=""
        csumvalue=""
        self.guid="-----------------"
        ret=lfc.lfc_setfsizeg(self.guid,self.size,csumtype,csumvalue)
        stat=lfc.lfc_filestatg()
        lfc.lfc_statg("",self.guid, stat)
        return (stat,ret)
    def ret(self):
        retval=lfc.lfc_filestat()
        retval.filesize=0L
        return retval

    def compare(self, testVal, retVal):
        (ret, retRetVal) = retVal
        (test, testRetVal) = testVal
        retval = True
        if (retRetVal == testRetVal):
            retval = retval & ( test.filesize == ret.filesize )
        else:
            retval = False
        return retval


class lfc_setfsizeg_test(_testRunner):
    def __init__(self):
        self.name = "lfc_setfsize_test"
        self.tests=[test_setfsize_ok,test_nonexisting_guid]


#************* Interface for SAM and Python tests ***************
SAM_Run(lfc_setfsizeg_test)

