/* * ticket-460.sli * * This file is part of NEST. * * Copyright (C) 2004 The NEST Initiative * * NEST is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * NEST is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NEST. If not, see <http://www.gnu.org/licenses/>. * */ /* BeginDocumentation Name: testsuite::ticket-460 - Check that local and global Get{Node/Leaves/Children} work Synopsis: (ticket-460) run -> NEST exits if test fails Description: This test creates a network and extracts nodes, leaves and children both locally and globally. Note: This should be run with 1 and 2 MPI processes automatically. Author: Hans Ekkehard Plesser, 2010-09-24 */ /unittest (9715) require /unittest using [1 2] { M_INFO setverbosity ResetKernel /s1 /subnet Create def % gid 1 s1 ChangeSubnet /s2 /subnet Create def % gid 2 /s3 /subnet Create def % gid 3 0 ChangeSubnet /voltmeter 2 Create ; % gid 4,5 /iaf_neuron 2 Create ; % gid 6,7 s2 ChangeSubnet /iaf_neuron 6 Create ; % gid 8,9,10,11,12,13 s1 ChangeSubnet /iaf_neuron 4 Create ; % gid 14,15,16,17 s3 ChangeSubnet /iaf_neuron 3 Create ; % gid 18,19,20 0 GetGlobalNodes Sort [1 20] Range eq % 1..20 0 GetGlobalLeaves Sort [4 20] Range eq % 4..20 0 GetGlobalChildren Sort [1 4 5 6 7] eq % 1, 4..5, 6..7 NumProcesses 1 eq { % 1 mpi process: local == global 0 GetLocalNodes Sort [1 20] Range eq % 1..20 0 GetLocalLeaves Sort [4 20] Range eq % 4..20 0 GetLocalChildren Sort [1 4 5 6 7] eq % 1, 4..5, 6..7 } { NumProcesses 2 eq { Rank 0 eq { 0 GetLocalNodes Sort [1 5] Range [6 20 2] Range join eq 0 GetLocalLeaves Sort [4 5] [6 20 2] Range join eq 0 GetLocalChildren Sort [1 4 5 6] eq } { 0 GetLocalNodes Sort [1 5] Range [7 20 2] Range join eq 0 GetLocalLeaves Sort [4 5] [7 20 2] Range join eq 0 GetLocalChildren Sort [1 4 5 7] eq } ifelse } { (ERROR: only 1 or 2 procs) == } ifelse } ifelse 6 arraystore true exch { and } Fold % all jobs of all runs should return true } distributed_collect_assert_or_die