genPutUsers.pl
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:5k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. #!/usr/bin/perl -w
  2. # ====================================================================
  3. # The Vovida Software License, Version 1.0 
  4. # Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions
  7. # are met:
  8. # 1. Redistributions of source code must retain the above copyright
  9. #    notice, this list of conditions and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. #    notice, this list of conditions and the following disclaimer in
  12. #    the documentation and/or other materials provided with the
  13. #    distribution.
  14. # 3. The names "VOCAL", "Vovida Open Communication Application Library",
  15. #    and "Vovida Open Communication Application Library (VOCAL)" must
  16. #    not be used to endorse or promote products derived from this
  17. #    software without prior written permission. For written
  18. #    permission, please contact vocal@vovida.org.
  19. # 4. Products derived from this software may not be called "VOCAL", nor
  20. #    may "VOCAL" appear in their name, without prior written
  21. #    permission of Vovida Networks, Inc.
  22. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
  23. # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  24. # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
  25. # NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
  26. # NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
  27. # IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
  28. # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  29. # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  30. # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  31. # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  32. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
  33. # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  34. # DAMAGE.
  35. # ====================================================================
  36. # This software consists of voluntary contributions made by Vovida
  37. # Networks, Inc. and many individuals on behalf of Vovida Networks,
  38. # Inc.  For more information on Vovida Networks, Inc., please see
  39. # <http://www.vovida.org/>.
  40. ###############################################################################
  41. #
  42. # Usage: genPutUsers begin-userid num-users
  43. #
  44. # Note: This script requires the executable PutMultipleFiles
  45. #       to be located in the current directory.
  46. #
  47. # Script to generate x number of user accounts in xml format
  48. # and place them in the correct Provisioning directories.
  49. #
  50. # The starting user name must be an integer and the subseqent
  51. # user names will increment upwards from there.
  52. #
  53. # A file called tplate will be used as the source for
  54. # the contents of the generated files. Tplate should be a valid
  55. # xml user file. The user name tag will be replaced with the
  56. # correct tag for each user.
  57. #
  58. # This script will generate all files first in the current directory
  59. # and then place them into the provisioning directories.
  60. #
  61. #
  62. # $Id: genPutUsers.pl,v 1.2 2001/05/13 10:54:01 icahoon Exp $
  63. #
  64. #
  65. ###############################################################################
  66. # display usage message
  67. #
  68. if (@ARGV != 2 ) {
  69.   die "Usage:  $0  begin-userid num-usersn";
  70. }
  71. # verbose mode
  72. $verbose = 0;
  73. # parse arguments
  74. $idbase = $ARGV[0];   # begin userid
  75. $count = $ARGV[1];    # generate $count users
  76. # set template file:
  77. $template = "./tplate";      # this is the template file we want to clone
  78. $id = $idbase;
  79. # using $template file, generate $idbase+n.xml file in current directory
  80. sub cloneAccount {
  81.    # assume <TEMPLATE> and <OUTFILE> are already opened:
  82.    while (<TEMPLATE>)
  83.    {
  84.        $line = $_;
  85.        chomp($line);
  86.        if (/(^<user><name>)/) {
  87.           $newline = "<user><name>$id</name>";
  88.           print OUTFILE "$newlinen"; 
  89.           # printf( "newline = $newlinen" );
  90.           next;
  91.        }
  92.        # ignore the rest of xml data, just output to OUTFILE:
  93.        print OUTFILE "$linen";
  94.    }
  95. }
  96. # set up file handles to generate new user xml files:
  97. sub prepareData {
  98.    $outfile = "$id";    # file name = userAccount#
  99.    if (-e $outfile )
  100.    {
  101.       rmdir $outfile;
  102.    }
  103.    # first, fix up the file content   
  104.    open( TEMPLATE, "<" . $template) || die "Could not open $templaten";
  105.    open(OUTFILE, ">$outfile");
  106.       print "generating $outfile...n" if $verbose;
  107.       cloneAccount();
  108.    close( OUTFILE );
  109.    close( TEMPLATE );
  110. }
  111. # main prog
  112. sub main {
  113.    # loop $count times
  114.    $i = $count;
  115.    while ($i) {
  116.        prepareData();     
  117.        $id++;
  118.        $i--;
  119.    }   
  120.    # call FileDataStoreWrapper to put the files in the hash bins:-
  121.    # usage: <#users -> this determines the # of hash bin buckets, 1000==> 6>
  122.    #        <provisioning root directory, e.g. /usr/local/vocal/prov....>
  123.    #        <target directory name, e.g. Accounts>
  124.    #        <begin User number, e.g. 5000>
  125.    #        <# Users to generate: do it in batches, or else it'll take forever!>
  126.    @args = ("./PutMultipleFiles", "1000", "/usr/local/vocal/provisioning_data", "Accounts", $idbase, $count);
  127.    system( @args ) == 0 
  128.       or die "system @args failed: $?";
  129.    $id = $idbase;
  130.    $i = $count;
  131.    while ($i) {
  132.        $outfile = "$id";    # file name = userAccount#
  133.        unlink ${outfile};
  134.        $id++;
  135.        $i--;
  136.    }
  137. }
  138. main();
  139. ## end of program