Ejemplo n.º 1
0
def myroutine():
    ds = DataSource('data.xtc')
    for nevent, evt in enumerate(ds.events()):
        if nevent == 0:
            dgrambytes_event0 = evt.dgrams[0]._dgrambytes
        elif nevent == 1:
            dgram_event1 = evt.dgrams[0]

    # be sure you know what you are doing before you change
    # these reference count numbers. - cpo
    dgrambytes_event1 = dgram_event1._dgrambytes
    # 4 for arrays, 1 for dgram, 1 for getref, 1 for dgrambytes_event1
    assert getref(dgrambytes_event1) == 7
    # event0 dgram is deleted, so only 1 for dgrambytes_event0 and 1 for getref
    assert getref(dgrambytes_event0) == 2

    return dgram_event1, ds._configs[0]
Ejemplo n.º 2
0
def refcnt_test(fname, nsegments, cydgram):
    ds = DataSource(files=fname)
    for nevent, evt in enumerate(ds.events()):
        if nevent == 0:
            dgrambytes_event0 = evt._dgrams[0]._dgrambytes
        elif nevent == 1:
            dgram_event1 = evt._dgrams[0]

    # be sure you know what you are doing before you change
    # these reference count numbers. - cpo
    dgrambytes_event1 = dgram_event1._dgrambytes
    # 4 arrays per segment, 1 for dgram, 1 for getref, 1 for dgrambytes_event1
    # cydgram test eliminates 3 of these arrays however (a hack since
    # the xpphsd detector has unsupported cydgram types of charstr/enum)
    if cydgram:
        assert getref(dgrambytes_event1) == 1 * nsegments + 3
    else:
        assert getref(dgrambytes_event1) == 4 * nsegments + 3

    # event0 dgram is deleted, so only 1 for dgrambytes_event0 and 1 for getref
    assert getref(dgrambytes_event0) == 2

    return dgram_event1, ds._configs[0]
Ejemplo n.º 3
0
def myroutine2():
    d = Dgram()
    assert getref(d) == 2
    arr1 = d.array0  #increase refcount of d
    assert getref(d) == 3
    assert getref(arr1) == 2
    s1 = arr1[2:4]  #increase refcount of arr1
    assert s1.base is arr1
    assert getref(arr1) == 3
    assert getref(s1) == 2

    arr2 = d.array0  #increase refcount of d
    assert getref(d) == 4
    s2 = arr2[3:5]  # increase refcount of arr2
    assert getref(d) == 4
    assert getref(arr2) == 3

    return s1, d  # destroys arr2 and s2, should decrement d refcnt by 1
Ejemplo n.º 4
0
def myroutine1():
    s1, d = myroutine2()
    assert getref(d) == 3
    assert getref(s1) == 2

    return d  # should decrement d refcnt by 1 since s1 is now gone
Ejemplo n.º 5
0
    assert getref(s1) == 2

    arr2 = d.array0  #increase refcount of d
    assert getref(d) == 4
    s2 = arr2[3:5]  # increase refcount of arr2
    assert getref(d) == 4
    assert getref(arr2) == 3

    return s1, d  # destroys arr2 and s2, should decrement d refcnt by 1


def myroutine1():
    s1, d = myroutine2()
    assert getref(d) == 3
    assert getref(s1) == 2

    return d  # should decrement d refcnt by 1 since s1 is now gone


d = myroutine1()
assert getref(d) == 2
assert d.float0 == 0.0
assert d.float1 == 1000.0
assert d.int0 == 1
assert d.int1 == 1001
#this seems to crash the test.  need to fix.
#print(dir(d))
assert d.fexint1 == 42
assert d.fexfloat1 == 41.0
print('dgram test complete')