*** empty log message ***

svn path=/trunk/boinc/; revision=12147
This commit is contained in:
David Anderson 2007-02-24 00:11:30 +00:00
parent 6b4803d969
commit b23d197f31
6 changed files with 482 additions and 29 deletions

View File

@ -1984,3 +1984,13 @@ David 23 Feb 2007
client_types.C,h
sched/
handle_request.C
David 23 Feb 2007
- client simulator: wrote more code, added Windows project
client/
sim.C,h
work_fetch.C
win_build/
boinc.sln
sim.vcproj

View File

@ -2,7 +2,10 @@
// sim [--projects X] [--host X] [--prefs X] [--duration X]
// defaults: projects.xml, host.xml, prefs.xml, 86400
#include "error_numbers.h"
#include "str_util.h"
#include "filesys.h"
#include "network.h"
#include "sim.h"
CLIENT_STATE gstate;
@ -12,14 +15,18 @@ bool user_active;
//////////////// FUNCTIONS MODIFIED OR STUBBED OUT /////////////
FILE* boinc_fopen(const char* path, const char* mode) {
return fopen(path, mode);
}
void CLIENT_STATE::set_client_state_dirty(char const*) {
}
void HOST_INFO::generate_host_cpid() {}
bool get_connected_state() {return true;}
int get_connected_state() {return CONNECTED_STATE_CONNECTED;}
int CLIENT_STATE::report_result_error(RESULT& res, const char* format, ...) {}
int CLIENT_STATE::report_result_error(RESULT& , const char* , ...) {return 0;}
void show_message(PROJECT *p, char* msg, int priority) {
const char* x;
@ -111,7 +118,6 @@ RESULT* CLIENT_STATE::lookup_result(PROJECT* p, const char* name) {
bool CLIENT_STATE::scheduler_rpc_poll() {
PROJECT *p;
bool action=false;
p = next_project_sched_rpc_pending();
if (p) {
@ -156,19 +162,139 @@ int ACTIVE_TASK::init(RESULT*){
//////////////// OTHER
int SIM_APP::parse(XML_PARSER& p) {
PROJECT::PROJECT() {}
int NORMAL_DIST::parse(XML_PARSER& xp, char* end_tag) {
char tag[256];
bool is_tag;
while(!xp.get(tag, sizeof(tag), is_tag)) {
if (!is_tag) return ERR_XML_PARSE;
if (xp.parse_double(tag, "mean", mean)) continue;
else if (xp.parse_double(tag, "var", var)) continue;
else if (!strcmp(tag, end_tag)) return 0;
else return ERR_XML_PARSE;
}
return ERR_XML_PARSE;
}
int SIM_PROJECT::parse(XML_PARSER& p) {
int UNIFORM_DIST::parse(XML_PARSER& xp, char* end_tag) {
char tag[256];
bool is_tag;
while(!xp.get(tag, sizeof(tag), is_tag)) {
if (!is_tag) return ERR_XML_PARSE;
if (xp.parse_double(tag, "lo", lo)) continue;
else if (xp.parse_double(tag, "hi", hi)) continue;
else if (!strcmp(tag, end_tag)) return 0;
else return ERR_XML_PARSE;
}
return ERR_XML_PARSE;
}
int SIM_HOST::parse(XML_PARSER& p) {
int RANDOM_PROCESS::parse(XML_PARSER& xp, char* end_tag) {
char tag[256];
bool is_tag;
while(!xp.get(tag, sizeof(tag), is_tag)) {
if (!is_tag) return ERR_XML_PARSE;
if (xp.parse_double(tag, "frac", frac)) continue;
else if (xp.parse_double(tag, "lambda", lambda)) continue;
else if (!strcmp(tag, end_tag)) return 0;
else return ERR_XML_PARSE;
}
return ERR_XML_PARSE;
}
int CLIENT_STATE::parse_projects(char*) {
int SIM_APP::parse(XML_PARSER& xp) {
char tag[256];
bool is_tag;
int retval;
while(!xp.get(tag, sizeof(tag), is_tag)) {
if (!is_tag) return ERR_XML_PARSE;
if (!strcmp(tag, "/app")) {
return 0;
} else if (xp.parse_double(tag, "latency_bound", latency_bound)) continue;
else if (!strcmp(tag, "fpops")) {
retval = fpops.parse(xp, "/fpops");
if (retval) return retval;
} else if (!strcmp(tag, "checkpoint_period")) {
retval = checkpoint_period.parse(xp, "/checkpoint_period");
if (retval) return retval;
} else if (xp.parse_double(tag, "working_set", working_set)) continue;
else return ERR_XML_PARSE;
}
return ERR_XML_PARSE;
}
int SIM_PROJECT::parse(XML_PARSER& xp) {
char tag[256];
bool is_tag;
int retval;
while(!xp.get(tag, sizeof(tag), is_tag)) {
if (!is_tag) return ERR_XML_PARSE;
if (!strcmp(tag, "/project")) return 0;
else if (xp.parse_str(tag, "project_name", project_name, sizeof(project_name))) continue;
else if (!strcmp(tag, "app")) {
SIM_APP* sap = new SIM_APP;
retval = sap->parse(xp);
if (retval) return retval;
gstate.apps.push_back(sap);
} else if (!strcmp(tag, "available")) {
retval = available.parse(xp, "/available");
if (retval) return retval;
} else return ERR_XML_PARSE;
}
return ERR_XML_PARSE;
}
int SIM_HOST::parse(XML_PARSER& xp) {
char tag[256];
bool is_tag;
int retval;
while(!xp.get(tag, sizeof(tag), is_tag)) {
if (!is_tag) return ERR_XML_PARSE;
if (!strcmp(tag, "/host")) return 0;
else if (xp.parse_double(tag, "p_fpops", p_fpops)) continue;
else if (xp.parse_double(tag, "m_nbytes", m_nbytes)) continue;
else if (!strcmp(tag, "available")) {
retval = available.parse(xp, "/available");
if (retval) return retval;
} else if (!strcmp(tag, "idle")) {
retval = idle.parse(xp, "/idle");
if (retval) return retval;
} else return ERR_XML_PARSE;
}
return ERR_XML_PARSE;
}
int CLIENT_STATE::parse_projects(char* name) {
char tag[256];
bool is_tag;
MIOFILE mf;
int retval;
FILE* f = fopen(name, "r");
if (!f) return ERR_FOPEN;
mf.init_file(f);
XML_PARSER xp(&mf);
if (!xp.parse_start("projects")) return ERR_XML_PARSE;
while(!xp.get(tag, sizeof(tag), is_tag)) {
if (!is_tag) return ERR_XML_PARSE;
if (!strcmp(tag, "project")) {
SIM_PROJECT *p = new SIM_PROJECT;
retval = p->parse(xp);
if (retval) return retval;
projects.push_back(p);
} else if (!strcmp(tag, "/projects")) {
return 0;
}
}
return ERR_XML_PARSE;
}
int CLIENT_STATE::parse_host(char*) {
return 0;
}
void CLIENT_STATE::simulate(double duration) {
@ -192,13 +318,26 @@ int main(int argc, char** argv) {
char projects[256], host[256], prefs[256];
double duration = 86400;
bool flag;
int retval;
strcpy(projects, "projects.xml");
strcpy(host, "host.xml");
strcpy(prefs, "prefs.xml");
gstate.parse_projects(projects);
gstate.parse_host(host);
gstate.global_prefs.parse_file(prefs, "", flag);
retval = gstate.parse_projects(projects);
if (retval) {
printf("can't parse projects\n");
exit(1);
}
retval = gstate.parse_host(host);
if (retval) {
printf("can't parse host\n");
exit(1);
}
retval = gstate.global_prefs.parse_file(prefs, "", flag);
if (retval) {
printf("can't parse prefs\n");
exit(1);
}
gstate.simulate(duration);
}

View File

@ -12,6 +12,7 @@ public:
vector<PROJECT*> projects;
vector<WORKUNIT*> workunits;
vector<RESULT*> results;
vector<APP*> apps;
ACTIVE_TASK_SET active_tasks;
GLOBAL_PREFS global_prefs;
HOST_INFO host_info;
@ -122,36 +123,34 @@ extern CLIENT_STATE gstate;
////////////////////////
class DIST {
public:
virtual double sample();
};
class NORMAL_DIST: public DIST {
class NORMAL_DIST {
public:
double mean;
double var;
int parse(XML_PARSER&, char* end_tag);
double sample();
};
class UNIFORM_DIST: public DIST {
class UNIFORM_DIST {
public:
double lo;
double hi;
int parse(XML_PARSER&, char* end_tag);
double sample();
};
class RAND_PROCESS {
class RANDOM_PROCESS {
public:
double fraction_up;
double up_lambda;
double frac;
double lambda;
int parse(XML_PARSER&, char* end_tag);
};
class SIM_APP: public APP {
public:
double latency_bound;
DIST* fpops;
DIST* checkpoint_period;
NORMAL_DIST fpops;
NORMAL_DIST checkpoint_period;
double working_set;
int parse(XML_PARSER&);
@ -159,13 +158,13 @@ public:
class SIM_PROJECT: public PROJECT {
public:
RAND_PROCESS available;
RANDOM_PROCESS available;
int parse(XML_PARSER&);
};
class SIM_HOST: public HOST_INFO {
public:
RAND_PROCESS available;
RAND_PROCESS idle;
RANDOM_PROCESS available;
RANDOM_PROCESS idle;
int parse(XML_PARSER&);
};

View File

@ -38,7 +38,6 @@
#include <set>
#endif
#include "crypt.h"
#include "error_numbers.h"
#include "file_names.h"
#include "filesys.h"

View File

@ -2,8 +2,8 @@ Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boinc", "boinc_cli_curl.vcproj", "{C04F0FCC-BB5D-4627-8656-6173B28BD69E}"
ProjectSection(ProjectDependencies) = postProject
{B06280CB-82A4-46DE-8956-602643078BDF} = {B06280CB-82A4-46DE-8956-602643078BDF}
{E8F6BD7E-461A-4733-B7D8-37B09A099ED8} = {E8F6BD7E-461A-4733-B7D8-37B09A099ED8}
{B06280CB-82A4-46DE-8956-602643078BDF} = {B06280CB-82A4-46DE-8956-602643078BDF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boinc_dll", "boinc_dll.vcproj", "{B06280CB-82A4-46DE-8956-602643078BDF}"
@ -12,14 +12,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boinc_ss", "boinc_ss.vcproj
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boinccmd", "boinccmd.vcproj", "{8F37E1F3-3A68-4A1D-9579-A1210BDD055E}"
ProjectSection(ProjectDependencies) = postProject
{C04F0FCC-BB5D-4627-8656-6173B28BD69E} = {C04F0FCC-BB5D-4627-8656-6173B28BD69E}
{E8F6BD7E-461A-4733-B7D8-37B09A099ED8} = {E8F6BD7E-461A-4733-B7D8-37B09A099ED8}
{C04F0FCC-BB5D-4627-8656-6173B28BD69E} = {C04F0FCC-BB5D-4627-8656-6173B28BD69E}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boincmgr", "boincmgr_curl.vcproj", "{06113715-AC51-4E91-8B9D-C987CABE0920}"
ProjectSection(ProjectDependencies) = postProject
{C04F0FCC-BB5D-4627-8656-6173B28BD69E} = {C04F0FCC-BB5D-4627-8656-6173B28BD69E}
{B06280CB-82A4-46DE-8956-602643078BDF} = {B06280CB-82A4-46DE-8956-602643078BDF}
{C04F0FCC-BB5D-4627-8656-6173B28BD69E} = {C04F0FCC-BB5D-4627-8656-6173B28BD69E}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libboinc", "libboinc.vcproj", "{E8F6BD7E-461A-4733-B7D8-37B09A099ED8}"
@ -29,6 +29,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "updater", "updater.vcproj",
{E8F6BD7E-461A-4733-B7D8-37B09A099ED8} = {E8F6BD7E-461A-4733-B7D8-37B09A099ED8}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sim", "sim.vcproj", "{B950E31B-C075-4F6D-8A2B-25EAE9D46C93}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@ -63,6 +65,10 @@ Global
{B865A797-36AF-4059-9D52-8FF4F9B132D5}.Debug|Win32.Build.0 = Debug|Win32
{B865A797-36AF-4059-9D52-8FF4F9B132D5}.Release|Win32.ActiveCfg = Release|Win32
{B865A797-36AF-4059-9D52-8FF4F9B132D5}.Release|Win32.Build.0 = Release|Win32
{B950E31B-C075-4F6D-8A2B-25EAE9D46C93}.Debug|Win32.ActiveCfg = Debug|Win32
{B950E31B-C075-4F6D-8A2B-25EAE9D46C93}.Debug|Win32.Build.0 = Debug|Win32
{B950E31B-C075-4F6D-8A2B-25EAE9D46C93}.Release|Win32.ActiveCfg = Release|Win32
{B950E31B-C075-4F6D-8A2B-25EAE9D46C93}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

300
win_build/sim.vcproj Normal file
View File

@ -0,0 +1,300 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="sim"
ProjectGUID="{B950E31B-C075-4F6D-8A2B-25EAE9D46C93}"
RootNamespace="boinc_guirpctest"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Build\Debug"
IntermediateDirectory=".\Build\Debug\boinc_cmd\obj"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Build\Debug/boinc_guirpctest.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../curl/include;../lib/;../api/;../client/win/;../client;.."
PreprocessorDefinitions="WIN32;_DEBUG;_MT;_DLL;_WINDOWS;_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
PrecompiledHeaderThrough="boinc_win.h"
PrecompiledHeaderFile="$(IntDir)/boinc_win.pch"
AssemblerListingLocation=".\Build\Debug\boinc_guirpctest\obj/"
ObjectFile=".\Build\Debug\boinc_guirpctest\obj/"
ProgramDataBaseFileName=".\Build\Debug\boinc_guirpctest\obj/vc70.pdb"
BrowseInformation="1"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
CompileAs="2"
DisableSpecificWarnings="4127;4702;4244"
ForcedIncludeFiles="boinc_win.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
AdditionalIncludeDirectories=".."
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="MSVCRTD.LIB MSVCPRTD.LIB kernel32.lib user32.lib advapi32.lib wsock32.lib wininet.lib winmm.lib oldnames.lib"
OutputFile=".\Build\Debug/boinccmd.exe"
LinkIncremental="0"
SuppressStartupBanner="true"
IgnoreAllDefaultLibraries="true"
IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Build\Debug/boinccmd.pdb"
SubSystem="1"
OptimizeReferences="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Build\Release"
IntermediateDirectory=".\Build\Release\boinc_cmd\obj"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Build\Release/boinc_guirpctest.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../lib/,../api/,../RSAEuro/source/,../client/win/,../client,.."
PreprocessorDefinitions="WIN32;NDEBUG;_MT;_DLL;_WINDOWS;_CONSOLE"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
PrecompiledHeaderThrough="boinc_win.h"
PrecompiledHeaderFile="$(IntDir)/boinc_win.pch"
AssemblerListingLocation=".\Build\Release\boinc_guirpctest\obj/"
ObjectFile=".\Build\Release\boinc_guirpctest\obj/"
ProgramDataBaseFileName=".\Build\Release\boinc_guirpctest\obj/"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
CompileAs="2"
DisableSpecificWarnings="4127;4702;4244"
ForcedIncludeFiles="boinc_win.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories=".."
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib user32.lib advapi32.lib wsock32.lib wininet.lib winmm.lib MSVCRT.LIB MSVCPRT.LIB oldnames.lib"
ShowProgress="0"
OutputFile=".\Build\Release/boinccmd.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
IgnoreAllDefaultLibraries="true"
IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Build\Release/boinccmd.pdb"
SubSystem="1"
OptimizeReferences="2"
SetChecksum="true"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="..\client\client_msgs.C"
>
</File>
<File
RelativePath="..\client\cpu_sched.C"
>
</File>
<File
RelativePath="..\client\log_flags.C"
>
</File>
<File
RelativePath="..\lib\mfile.C"
>
</File>
<File
RelativePath="..\lib\miofile.C"
>
</File>
<File
RelativePath="..\lib\parse.C"
>
</File>
<File
RelativePath="..\lib\prefs.C"
>
</File>
<File
RelativePath="..\client\sim.C"
>
</File>
<File
RelativePath="..\lib\str_util.C"
>
</File>
<File
RelativePath="..\client\time_stats.C"
>
</File>
<File
RelativePath="..\client\work_fetch.C"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="..\client\sim.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>